Eu tenho um branch 'firstproject' com 2 commits. Eu quero me livrar desses commits e fazê-los aparecer como um único commit.
O comando git merge --squash
parece promissor, mas quando executo git merge --squash
meu terminal apenas exibe opções para o comando. Qual é o comando correto?
Commit 1:
Added 'homepage.html'
Added 'contacts.html'
Commit 2:
Added 'homepage.php'
Added 'homepage.php'
Deleted 'homepage.html'
Deleted 'contacts.html'
Respostas:
Você deseja
git rebase -i
realizar um rebase interativo .Se você está atualmente no seu "commit 1", e o commit que deseja mesclar, "commit 2", é o commit anterior, você pode executar
git rebase -i HEAD~2
, o que irá gerar um editor listando todos os commits que o rebase irá percorrer. Você deve ver duas linhas começando com "pick". Para continuar a esmagar, altere a primeira palavra da segunda linha de "escolher" para "esmagar". Em seguida, salve o arquivo e saia. Git irá esmagar seu primeiro commit em seu segundo último commit.Observe que este processo reescreve a história do seu ramo. Se você estiver enviando seu código para algum lugar, terá que fazê-lo
git push -f
e qualquer pessoa que compartilhe seu código terá que passar por alguns obstáculos para obter suas alterações.Note que se os dois commits em questão não são os últimos dois commits no branch, o processo será ligeiramente diferente.
fonte
Then write your file, and quit
? Estou usando o Android Studio Terminal, o próprio git console Ou até abri o git console pelo software SourceTree. Mas como economizar e desistir?Versão simples preguiçosa para esquecidos como eu:
git rebase -i HEAD~3
ou quantos commits em vez de 3.Vire isso
nisso
e faça alguma ação onde você clicar em
esc
seguidaenter
para salvar as alterações. [1]Quando a próxima tela aparecer, livre-se dessas linhas inúteis [2] e crie uma nova mensagem de commit ou algo assim, e faça a mesma
escape
enter
ação. [1]Uau, você tem menos commits. Ou você simplesmente quebrou tudo.
[1] - ou o que quer que funcione com sua configuração git. Esta é apenas uma sequência eficiente, dada a minha configuração.
[2] - você verá algumas coisas como
# this is your n'th commit
algumas vezes, com seus commits originais logo abaixo desta mensagem. Você deseja remover essas linhas e criar uma mensagem de commit para refletir as intenções dos n commits que você está combinando em 1.fonte
s
usado aqui significa squash. Para usar o commit, mas se fundir ao commit anterior2
commits e deseja combinar o mesmo2
commit, você precisará executargit reset --soft HEAD~
egit commit --amend
.git rebase -i HEAD~<quantity of your commits>
(ou sejagit rebase -i HEAD~5
)txt
arquivo aberto, altere apick
palavra-chave parasquash
para todos os commits, exceto o primeiro commit (que está no topo). Para o primeiro, mude parareword
(o que significa que você fornecerá um novo comentário para este commit na próxima etapa) e clique em SALVAR! Se estiver no vim, pressioneesc
e salve inserindowq!
e pressione enter.Feito
fonte