Melhor comprometer o histórico ao puxar e mesclar

O seu repositório de desenvolvimento está cheio de Merge branch 'develop' of github.com:your/repository into developcommits? Sempre use a --rebasesinalização que evita mesclagem desnecessária no pull-push:

git pull --rebase origin develop

Por outro lado, se você deseja mesclar o branch do recurso, use a -no-ffsinalização para evitar o histórico de avanço rápido e obter o verdadeiro commit de mesclagem:

git merge --no-ff feature-awesome
git log
--oneline

936bf9 Merge branch 'feature-awesome'
adb1b9 awesome feature

9034fd init

Agora, suponha que você mudou de ideia. Graças a --no-ff, reverter todos os commits do recurso é tão simples como:

git revert 936bf9 -m 1
git log
--oneline

15e772 Revert "Merge branch 'feature-awesome'"
936bf9 Merge branch 'feature-awesome'
adb1b9 awesome feature

9034fd init

Se você quiser mesclar o recurso novamente, terá que reverter o commit de reversão e então mesclar o branch de recurso fixo mais uma vez:

git revert 15e772
git merge feature
-awesome
git log
--oneline -n4

e074bc
Merge branch 'feature-awesome'
f43699
Revert "Revert "Merge branch 'feature-awesome'""
3243b5 fix
15e772 Revert "Merge branch 'feature-awesome'"

Bônus: dê uma olhada no git up !