Por exemplo, no seguinte branch master, preciso eliminar apenas o commit af5c7bf16e6f04321f966b4231371b21475bc4da, que é o segundo devido ao rebase anterior:
commit 60b413512e616997c8b929012cf9ca56bf5c9113
Author: Luca G. Soave <[email protected]>
Date: Tue Apr 12 23:50:15 2011 +0200
add generic config/initializers/omniauth.example.rb
commit af5c7bf16e6f04321f966b4231371b21475bc4da
Author: Luca G. Soave <[email protected]>
Date: Fri Apr 22 00:15:50 2011 +0200
show github user info if logged
commit e6523efada4d75084e81971c4dc2aec621d45530
Author: Luca G. Soave <[email protected]>
Date: Fri Apr 22 17:20:48 2011 +0200
add multiple .container at blueprint layout
commit 414ceffc40ea4ac36ca68e6dd0a9ee97e73dee22
Author: Luca G. Soave <[email protected]>
Date: Thu Apr 21 19:55:57 2011 +0200
add %h1 Fantastic Logo + .right for 'Sign in with Github'
Eu preciso manter
- o primeiro commit 60b413512e616997c8b929012cf9ca56bf5c9113,
- o terceiro commit e6523efada4d75084e81971c4dc2aec621d45530 e
- o último commit 414ceffc40ea4ac36ca68e6dd0a9ee97e73dee22
"jogando fora" apenas o Segundo commit af5c7bf16e6f04321f966b4231371b21475bc4da
Como eu posso fazer isso? Agradeço antecipadamente Luca
fonte
Se rebase for uma opção, você pode rebase e simplesmente descartá-lo:
Se o rebase não for uma opção, você pode apenas revertê-lo:
fonte
git rebase
para descartá-lo (executandorebase
no modo interativo e removendo sua entrada).Apesar de todo o crédito que as respostas originais receberam aqui, não as encontrei para responder de forma satisfatória à pergunta. Se você se encontrar em uma situação em que precisa remover um commit, ou uma coleção de commits do meio da história, sugiro o seguinte:
Aqui estão as informações sobre a seleção seletiva: O que significa a seleção seletiva de um commit com git?
Aqui estão algumas dicas sobre como fazer isso com o Tortoise Git (como acabei de fazer). É definitivamente mais fácil usar um utilitário gui para esses tipos de operações! Escolha cereja usando TortoiseGit
fonte