git merge
için --squash
seçenek olabilir faydalıdır ve git 1.4.1 ve sonraki sürümlerinde kullanılabilir. Bu, bir birleşmenin etkilerini aşamalıyor, ancak bir taahhüt oluşturmuyor.
# Save the old position of "master" by creating a branch old-master:
$ git checkout master
$ git branch old-master
# Create and checkout a branch called "new-master" that's at the old commit:
$ git checkout -b new-master 143eff
# Stage the effects of merging the "one month ago" commit:
$ git merge --squash dcb7e5
Updating 143eff3..dcb7e5b
Fast-forward
Squash commit -- not updating HEAD
[... status output showing the staged changes ..]
# Create the squashed commit:
$ git commit -m "A commit squashing history up to a month ago"
# (You could use --amend if you want them to be squashed into 143eff
# instead of being a commit after that.)
Şimdi git diff dcb7e5 new-master
ile kontrol edebilirsiniz: 143eff
Yani, eğer eski sen ezilmiş mevcut şube master
ve taahhüt "önce bir ay" Yapabileceğin, dcb7e5
olduğunu taahhüt eklemek istediğiniz işlemek onlar gerçekten aynı.
Ardından, yeni-master üzerine işinizin kalanını rebase istiyorum:
$ git rebase --onto new-master dcb7e5 master
istediğiniz geçmişi olmalıdır bir rebased
master
sizi terk edeceğimizi. . Github için ana iterken (Yine,
git diff old-master master
ve
git log
ile bu kontrol edebilirsiniz
--force
eklemeniz gerekecektir Eğer yeniden kaleme aldık beri geçmişi:
# Push master to github, with "--force", since you've rewritten history:
$ git push --force origin master
Artık kaldırabilir new-master
, kabak taahhüt altındadır, ile:
git branch -d new-master
Görünüşe github iter üzerinde git gc --auto
çalışır, bu nedenle yakında tasarruf bazı boşluk görmelisiniz ...
olası bir kopyası [Git deposunun ilk iki işlemini nasıl birleştiririm?] (Http://stackoverflow.com/questions/435646/how-do-i-combine-the-first-two-commits- of-a-git-repository) Burada bağlantılı soru sadece iki işi birleştirmeyi anlatırken, burada açıklanan tarifler daha fazla işlem için de işe yarar. –
Teşekkürler Pavel. Kontrol edeceğim. – dugla
Bu taahhütlerin tümünü tek bir işlemle mi yapmak istiyorsunuz yoksa aslında her birinin sunduğu değişiklikleri atmak mı istiyorsunuz? "Atmak" istediğin yorumlara göre ve proje farklı bir yöne gidiyor, bana tamamen açık değil. – masonk