2013-02-19 24 views
15

Github'dan bir repo almayı, geçmişte bir etiketi geri döndürmeyi, tüm geçmişi silerek başka bir uzaklığa aktarmayı deniyorum. Tüm taahhüt kayıtlarını silmeden aşağıda her şeyi yapabilirim. Benim neyim eksik?Tümünü sil Git Commit Geçmişi

git clone https://github.com/user/user-repo.git 
cd user-repo 
git reset --hard tags/v2.0 
git remote add stash ssh://[email protected]:7999/myproject/user-repo.git 
git push --force stash master 

cevap

33

İstediğin şeyin yeni olduğu gibi bir repo olduğunu düşündüm, bu yüzden .git/ dizinini silip yeniden düzenlemek daha kolay olacaktır.

git clone https://github.com/user/user-repo.git 
cd user-repo 
git reset --hard tags/v2.0 

rm -rf .git/ 
git init 
git add . 
git commit -m 'first commit' 

git remote add stash ssh://[email protected]:7999/myproject/user-repo.git 
git push --force stash master 
+0

Teşekkürler, bu yazıyı okumadan önce bitti. Ben aynı şeyi yaptım :) – noway

+0

Bu muazzam bana yardımcı oldu! Teşekkürler – breezy

+0

İstediğim şey bu. – Shaowu

3

Hepiniz birine taahhüt ezmeye git merge --squash kullanabilir ve daha sonra itin.

1

Temel olarak, tüm taahhütleri tek bir taahhüt haline getirmekten mi bahsediyorsunuz yoksa tüm taahhütleri saklamak mı istiyorsunuz, ancak gerçek taahhüt mesajını kesmek mi istiyorsunuz?

birine kaydedilmesini ezmek için (ve son teslim mesajlarına kesmek, eğer isterseniz), etkileşimli rebase kullanabilirsiniz:

git rebase -i <whatever> 

fiili mesajları işlemek kesmek ancak kaydedilmesini tüm korumak için, --msg-filter seçeneğini git filter-branch olarak kullanın.