2008-08-22 24 views
98

Bu soruyu sormanın birden fazla yolu olabilir, dolayısıyla sorunun nedeninin açıklanması. Usta üzerinde çalışıyordum ve bir şeyler işledim ve sonra bu işi beklemeye almak istediğime karar verdim. Birkaç işi tamamladım ve bok işime başlamadan önce dallandım. Pratik olarak bu iyi çalışıyor, şimdi ana geliştirme şubem olarak farklı bir şubem var. Etrafımdaki şeyleri nasıl değiştirebileceğimi merak ediyorum, bu yüzden tekrar ustalıkla çalışıyorum ama gereksiz işim yok ve işin farklı bir dalda olduğunu söyledi.Şube adlarını git'e git

Bunun bazı yolları sorulabilir/çözülebilir: Ana şubemi başka bir şeye nasıl yeniden adlandırabilirim ve daha sonra başka bir şeye master olarak yeniden adlandırabilir miyim? Master'ı nasıl yedeklerim ve sonra farklı bir dalda olmak için geçmişte yedeklediğim tüm işlemleri neden yaparım?

Tüm (hızlı) cevaplar için teşekkürler! Hepsi iyi.

cevap

140

Diğer yorumlara ek olarak, -m (move) anahtarını git-dalına yardımcı bulabilirsiniz. Daha sonra usta yeni şube adlandırmak, başka bir şey için eski usta adlandırmak olabilir:

git branch -m master crap_work 
git branch -m previous_master master 
+1

Bu, geçerli dalınızı yeniden adlandırırken de çalışır! :) – Tarrasch

+0

İş akışınıza bağlı olarak, ayrıca .git/config içindeki şube referanslarını da değiştirmek isteyebilirsiniz. "[Branch" crap_work "]' ini [branch "master"] 'ı okumak için değiştirdim, böylece master hala "origin/master" ile senkronize olacaktı. Tabii ki, iki reposun durumu, bu hala mantıklıydı. – Eponymous

+1

Bu, yalnızca yerel repo üzerinde uzak repodaki dalları yeniden adlandırmıyor. – smohadjer

8

Bu nispeten kolaydır: master üzerine

git checkout -b fake_master master # fake_master now points to the same commit as master 
git branch -D master    # get rid of incorrect master 
git checkout -b master real_master # master now points to your actual master 
git checkout master    # optional -- switch on to your master branch 
+1

Yeap, son tamamen isteğe bağlıdır - Bir yaratır -b' 'git ödeme şube ** ve ** bunu aktif hale getirir. – incarnate

15

Başlat, daha önceki bir işlemeye master sıfırlamak sonra, in-progress denilen bir şube oluşturun.

$ git branch in-progress 
$ git reset --hard HEAD^ 
+1

Bunun için oy kullanma sebebi yok. Şube -m'yi öğrenmeden önce birkaç kez kendim yaptım ve efendinin bir dalın kalıcı adı olarak değişmez bir şekilde bağlanmadığını fark ettim. – skiphoppy

32

seni böyle bir sorun yaşamamak için farklı bir kalkınma stratejisi göz önüne almalısın. Benim için en iyi işe yarayacak bir şey, doğrudan ana dalımda geliştirme yapmamak.

 
git push pu topic/topic_name 

veya sonunda sadece birleştirme: Ben kamu depoları yapılacak değişiklikleri itebilir, Oradan

 
git checkout -b topic/topic_name master 

: Ne olursa olsun ben yapıyorum değişiklikler nedeniyle, her zaman yeni kodu için yeni bir şube oluşturmak geri benim usta şube ile: Eğer gerçekten o zaman içinde eski bir noktaya geri dönün ve ustası olarak, başka bir şey için geçerli şube adlandırmak olduğunu ayarlayabilirsiniz ve gerekiyorsa

 
git checkout master && git merge topic/topic_name 

kontrol

 
git branch -m master junk 
git co -b master old_sha1_value 
+0

Bu iyi bir politikadır. Ve bunu düşünmeye gel, başka yerlerde de uygulandığını gördüm. Teşekkürler. – Rimian

0

Bu tek bir adımda herhangi bir noktaya Ustana ayarlar: eski bir sürümünü usta olmak

git checkout -B master new_point 
İlgili konular