Alternatif bir çözüm, değişiklikleri taahhüt etmek ve daha sonra bu taahhütlerden kurtulmaktır. Bunun ilk başta anında bir yararı yoktur, ancak parçalar halinde iş yapma ve yedekleme için bir git etiketi oluşturma olanağını açar.
Mevcut dalda bunu yapabilirsiniz, şöyle:
git add (-A) .
git commit -m"DISCARD: Temporary local changes"
git tag archive/local-changes-2015-08-01 # optional
git revert HEAD
git reset HEAD^^
Ya da müstakil KAFA üzerinde yapabilirsiniz. (BRANCHNAME şubesinde başladığınızı varsayarsak):
git checkout --detach HEAD
git add (-A) .
git commit -m"DISCARD: Temporary local changes"
git tag archive/local-changes-2015-08-01 # optional
git checkout BRANCHNAME
Ancak, genelde yaptığım şey parçalara ayırmak, sonra da bazı veya tüm taahhütleri "DISCARD: ..." olarak adlandırmaktır. Sonra kötü taahhütleri kaldırmak ve iyi olanları tutmak için etkileşimli rebase kullanın.
git add -p # Add changes in chunks.
git commit -m"DISCARD: Some temporary changes for debugging"
git add -p # Add more stuff.
git commit -m"Docblock improvements"
git tag archive/local-changes-2015-08-01
git rebase -i (commit id) # rebase on the commit id before the changes.
# Remove the commits that say "DISCARD".
Bu daha ayrıntılıdır, ancak hangi değişiklikleri silmek istediğinizi tam olarak gözden geçirmenizi sağlar.
git lolVegit lola kısayolları bu iş akışıyla çok yararlı olmuştur.
git help resetvegit help clean