Mevcut daldaki tüm değişikliklerimi al ve Git'te yeni bir şubeye taşı


105

Ana şubemde küçük bir hata düzeltmesi olacağını düşündüğüm şey üzerinde çalışmaya başladım. Ancak, gelişmeyi ilk etapta yapmak için ayrı bir şube oluşturmayı dilediğim noktaya kadar kontrolden çıktı.

Yani şu anda yapmak istediğim şey:

  1. "Edge" adında (diyelim) yeni bir dal oluşturun
  2. Ana üzerindeki tüm değiştirilmiş / izlenmeyen dosyaları uç uca taşı (böylelikle ana hata düzeltmeyi başlattığım zamana göre ana değişmez)
  3. İşimi uç noktada bitir, ustaya geri dön

Bunu nasıl yapabilirim?

Yanıtlar:


103

Henüz hiçbir şey taahhüt etmediyseniz, zaten doğru konumdasınız.

  1. Yeni bir şube oluşturun: git checkout -b edge
  2. Dosyalarınız değişmedi. Sadece git addher zamanki gibi yapılması gereken ve taahhüdü.
  3. Üzerinde işlemekten bitirdiğinizde edge, geri dönmek masterile git checkoutve git merge edge.

Henüz hiçbir şey yapmadım, bu yüzden ilk satır hoş bir manzaraydı ... vay
be

87

Eğer varsa, JB cevabı eklemek için zaten , yapabilirsin bir "kenar" çaba olarak sona erdi için ne usta bir kaç hareketin yapmaya başladık:

git stash
git checkout -b edge master
git branch -f master SHA1_before_your_commits
git stash apply

Zula sarmalayıcı kesinlikle gerekli değildir, ancak taahhüt edilmeyen çalışma değişiklikleri için değil mi?
HaveAGuess

4
@HaveAGuess doğru. "Tüm değişikliklerimi al" ile, henüz eklenmemiş mevcut değişiklikleri de dahil ettim. Dolayısıyla zula.
VonC

İkinci ve üçüncü satırlar "git checkout -b edge master" olarak daraltılamaz mı?
Paul Lynch

Bu teslimleri (üzerinde dikkate @PaulLynch masterüzerinde olmalıdır) edge olan üzerinde masterevet. Cevabı düzenledim.
VonC

git stashKullanmak git checkout -bçalışma ağacını hiç değiştirmediğinden burada ne kadar yararlı olduğunu
anlamıyorum

13

Çalışmayı ana birimden zaten var olan ancak ana birimin gerisinde olan bir dala taşımaya çalışıyorsanız, git diğer şubeye geçmenize izin vermez. Bu durumda şunu yapın:

git stash
git checkout oldBranch
git merge master
git checkout master
git stash apply
git checkout oldBranch
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.