2016-04-07 19 views
1

BenimBranch'ta 10 tane taahhüt yaptığımı varsayalım (ve benimBranch kontrol edildi). Ustalıkla yeniden inşa etmek ve tüm işlemleri yapmak istiyorum. Mevcut iş akışıRebasing iş akışını kısaltma?

...

  1. git ödeme ana
  2. git kökenli getirme
  3. git -i usta
  4. rebase -r kökenli usta
  5. git ödeme myBranch
  6. git çekin
  7. git push -f kaynağı myBranch

Toplam 6 adımlı ve etkileşimli rebase konsolları ile başa çıkmak için (zorlama riskinden bahsetme).

Aynı etkiye sahip daha kısa bir iş akışı var mı?

cevap

2

Hedefinizin şubesi master şubesine karşı yeniden donatmak istiyorsanız, master şubesini güncellemek için bir neden yoktur.

git checkout master 
git fetch origin 
git pull -r origin master 
git checkout myBranch 
git rebase -i master 

İle:

git fetch origin 
git rebase -i origin/master 

etkileşimli rebase kaçınmak istiyorsanız, this answer açıklanan ne yapabiliriz:

git fetch origin 
git reset --soft origin/master 
git commit -m 'message for merged commit' 

Bu sıfırlar Şu adımları yerine Geçerli dizini çalışma dizini etkilemeden origin/master'a gönderir ve tüm değişikliklerinizi dizinde oluşturmaz. Bu, git commit'un tüm değişikliklerinizi tek bir adımda gerçekleştireceği anlamına gelir.

1
git fetch origin 
git rebase -i origin/master 
git push -f origin myBranch 

ya da tüm hatlarda stanzas değişimini kaydetmek ve tüm ilgili stanzas değişimini kaydetmek istiyorsanız mesaj taahhüt

git fetch origin 
git rebase origin/master 
git reset --soft origin/master 
git commit 
git push -f origin myBranch 

veya tamamen yeni kullanmak istediğiniz isterseniz tüm ezilmiş yerel kaydedilmesini ile yapmak isteyen tüm bunları ezmeye ise, hatta interaktif rebase yapmanız gerekmez

git fetch origin 
git rebase origin/master 
git reset --soft origin/master 
git commit --edit -m"$(git log --format=%B --reverse [email protected]{1})" 
git push -f origin myBranch 
2

taahhüt gelen hatlar ve taahhüt mesajları yeniden kullanmak istiyorsanız.Sen çok daha uygundur git reset --soft kullanarak bunu yapabilirsiniz:

git reset --soft HEAD~10 10'a kadar sıfırlamak #soft Yaptığınız değişiklikler zaten

O zaman bu noktada endeks eklenecektir #all önce

git commit -m "Message for the squashed commits" taahhüt sen Kumandanın master şube karşı rebase:

git fetch origin git rebase origin/master

Taahhütlerin ezilmesinin, sadece (sizin) kimsenin bu 10 işi myBranch'dan henüz almadığı durumlarda güvende olduğunu unutmayın, aksi takdirde geçmişi yeniden yazacaksınız ve kötü bir zaman geçireceksiniz.

İlgili konular