Soru Yerel bir Git dalını nasıl yeniden adlandırabilirim?


Açıklandığı gibi uzak bir şubeyi yeniden adlandırmak istemiyorum Hem yerel hem de uzak Git depoları için ana dalı yeniden adlandır.

Uzak bir şubeye itilmemiş bir yerel şubeyi nasıl yeniden adlandırabilirim?


6714
2017-07-06 03:20


Menşei




Cevaplar:


Bir dalı işaret ederken bir dalı yeniden adlandırmak isterseniz, şunları yapın:

git branch -m <oldname> <newname>

Mevcut şubeyi yeniden adlandırmak isterseniz şunları yapabilirsiniz:

git branch -m <newname>

Bunu hatırlamanın bir yolu, -m "hareket" için (veya mv), dosyaları nasıl yeniden adlandırırsınız.


10700
2017-07-06 03:21



Gerçekten bilmek istediğim şey, eğer / ittiyseniz, bunun uzaktaki şubeyi etkileyip etkilemeyeceğiydi. - PandaWood
@PandaWood: Yeni şubeyi eklediğinizde ekleyecektir, ancak eski dalı silmeyecektir. Eğer kullanırsan git push -f --mirrorDaha sonra uzaktan kumandadaki şubeyi yeniden adlandırır, ancak eğer uzaktan kumanda sadece mevcut deponuzun bir kopyasıysa, bu yöntemi kullanmalısınız. Ayrıca bu soruya da bakınız: stackoverflow.com/questions/1526794/git-rename-remote-branch - siride
@PandaWood, nasıl bağlıdır push.default yapılandırıldı. Varsayılan olarak (matching) İsmi eşleşen bir uzaklığa itecektir. Yapmalısın git push origin <newname>:<oldname> veya yeni bir uzak şube oluşturacaksınız. Ancak eğer push.default ayarlandı upstream, o zaman yapabilirsin push origin head ve işler uzaktaki eski adaya gider. - Erin Stanfill
@ NightOwl888: -m muhtemelen "taşıma" için kısa, kullanarak UNIX sözleşmesinin ardından mv dosyaları yeniden adlandırmak için. Bunun nedeni, dizin tabanlı bir inode dosya sisteminde, taşıma ve yeniden adlandırma işleminin tamamen eşdeğer olmasıdır. - siride
Uzun adı -m seçenek --move, Örneğin., git branch --move master "master" olarak adlandırılacak mevcut dalı yeniden adlandırır. - robenk


git branch -m old_branch_name new_branch_name

Yukarıdaki komut, şube adınızı değiştirecektir, ancak yeniden adlandırılan dalı kullanarak çok dikkatli olmanız gerekir, çünkü eğer varsa, onunla ilişkili eski akış yönüne başvurur.

Yerel şubenizin yeni_branch_name (örnek adı) olarak yeniden adlandırıldıktan sonra bazı değişiklikleri ana uygulamaya koymak isterseniz:

git push origin new_branch_name:master (şimdi değişiklikler ana şubeye gidecek, ancak yerel şube adınız new_branch_name)

Daha fazla ayrıntı için bkz. "Yerel şube adınızı Git'te nasıl yeniden adlandırma."


351
2018-01-21 09:49





Mevcut şubenizi yeniden adlandırmak için:

git branch -m <newname>

247
2018-06-20 15:05



Sadece eğer büyük harf değiştirirseniz yeniden adlandırmak için -M kullanmanız gerekecek, çünkü git size bu dalı zaten var. - cjspurgeon
Beni bu yoruma kaydettin. - jpadilladev
@cjspurgeon Git, beklenmedik bir şekilde, sezgisel olarak beni şaşırtıyor. Yıllardır. - 0xc0de


Şubeyi yeniden adlandırmak için adımlar şunlardır:

1. switch to branch which needs to be renamed
2. git branch -m <new_name>
3. git push origin :<old_name>
4. git push origin <new_name>:refs/heads/<new_name>

EDİT (12.01.2017): Komutu çalıştırdığından emin ol git status ve yeni yaratılan dalın kendi ref'e işaret ettiğini ve daha büyük olmadığını kontrol edin. Eski şubeye başvuruyu bulursanız, yukarı akışını aşağıdakileri kullanarak unsetmeniz gerekir:

git branch --unset-upstream

186
2018-04-15 12:50



Hangi adım, yukarı akışını kaldırır? 4. adımdan önce mi? - Cyclonecode
@Cyclonecode: evet. 4. adımdan sonra. Ancak eski şubeye referans olup olmadığını kontrol etmek için git durumunu çalıştırdığınızdan emin olun. - Milind Anantwar


Şubeyi yeniden adlandırın, şubeniz bittiğinde faydalı olacaktır. Daha sonra yeni şeyler geliyor ve silmek yerine yeni şubeyi oluşturmak için aynı dalda geliştirmek istiyorsunuz.

Tecrübemden Git'te yerel ve uzak bir şubeyi yeniden adlandırmak için aşağıdaki adımları izlemelisiniz.

Dan alıntı Birden Çok Durum - Yerel ve uzak bir şubeyi yeniden adlandırın   git

1. Yerel şubenizi yeniden adlandırın

Şube iseniz, yeniden adlandırmak istediğiniz:

git branch -m new-name

Farklı bir dalda iseniz:

git branch -m old-name new-name

2. Eski adı uzak şubesini silin ve yeni isim yerel şubesine basın

git push origin :old-name new-name

3. Yeni isim yerel şubesi için upstream şubesini sıfırlayın

git push origin -u new-name

124
2017-10-14 03:22



Bu benim için daha iyi çalıştı. İşte 2 adım bana aşağıdaki hataları verdi: error: dst ref refs/heads/<old-name> receives from more than one src.; error: failed to push some refs to 'git@uri:foo/bar.git' - Anto
Komutu çalıştırırken problemin var. git push origin :old-name new-name sağ? - trungk18
Tam olarak (üzgünüm "2. adım" demek istemedim, "2 adım" değil - yorgun) - Anto


Şimdiye kadar verilen cevaplar doğruydu ama işte bazı ek bilgiler: Bir dal, '-m' (hareket) ile yeniden isimlendirilebilir, ancak dikkatli olmak zorundadır çünkü '-M', zaten aynı ada sahip bir şube olsa bile, yeniden adlandırmaya zorlar. 'Git-branch' man sayfasından alıntılar:

Bir -m veya -M seçeneği ile <oldbranch> olarak yeniden adlandırılacak <newbranch>. Eğer <oldbranch> karşılık gelen bir reflog vardı, eşleşecek şekilde yeniden adlandırıldı <newbranch>ve şube yeniden adlandırma hatırlamak için bir reflog girişi oluşturulur. Eğer <newbranch> Varsa, yeniden adlandırılmaya zorlamak için -M kullanılmalıdır.


83
2017-09-24 13:21



Yazılı dalda ne olur? - Kevin Dice
Yeni isim / dalın üzerine yazılır. Örneğin, git dalında şu dallara sahipseniz: ana b1 <- mevcut şube b2 'git dalı -M b2' yaptıktan sonra sadece sahip olacaksınız: ana b2 <- mevcut şube b1 gitmiş olacak ve eğer isterseniz Kurtar onu hash ile kontrol etmelisin. 'Git reflog' yazarak görebilirsiniz. Şerefe. - Vanchev
-M bayrağın davasını düzeltirseniz, bayrak, bir yeniden adlandırmaya zorlamak için de yararlıdır. değiştirme myBranch için MyBranch. (İle -m, git döndürür fatal: A branch named 'MyBranch' already exists.) - Jon Schneider


1. Yeniden adlandır

Mevcut şubeniz varsa, sadece

git branch -m new_name

Başka bir dal ise yeniden adlandırmak istersiniz

git branch -m old_name new_name

2. Yeni bir uzak şube izleyin

- Şubeniz itildiyse, yeniden adlandırdıktan sonra onu uzak Git deposundan silmeniz ve yeni yerel şubenizden yeni bir uzak şube izlemesini istemeniz gerekir:

git push origin :old_name
git push --set-upstream origin new_name

68
2017-12-17 13:45





Aptalca bir tire ile başlayan bir dal seçtim ve daha sonra master'ı kontrol ettim. Ben istemedim silmek şubemde çalıştım.

Bunlardan hiçbiri işe yaramadı:

git checkout -dumb-name

git checkout -- -dumb-name

"s, 's ve \ya da yardım etmedi. git branch -m çalışmıyor

İşte sonunda onu nasıl tamir ettim. Çalışma kopyanızın .git / refs / head'larına gidin, "-dumb-name" dosya ismini bulun, dalın karmaşasını alın. Sonra bu kontrol edecek, aklı başında bir isim yapacak ve eskisini silecektir.

git checkout {hash}
git checkout -b brilliant-name
git branch -d -- -dumb-name

58
2017-11-09 07:31



Dosyayı yeniden başlıklar / başlıklar olarak değiştiremez miydin? - android.weasel
Aynen. Bu sihri yapmak için dizin yapısına girmeniz gerekiyorsa, sonuna kadar gidin ve bir 'mv - -dumb-isim parlak-adı' Do '' git branch -av 'yapın ve bir dizin yapısını göreceksiniz. .git / ref. Ya da doğrudan hashları görmek için 'grep -R ^ .git / refs'. - Dave X
Muhtemelen kullandın reflog - Code Whisperer
Dürüst olmak gerekirse, eğer almak istediğin rota buysa, (IMO kafa karıştırıcı ve ne yapacağını bilmiyorsan tehlikeli olabilir) ilk etapta .git dizininden kaçınıyorum, ve sadece bazılarıyla Bazı "git log" ayrıştırma ile normal komutlar (dalların gösterilmesi için uygun bayraklar kullanarak ve yeni bir şubeden hangi shasumu kontrol etmek istediğinizi belirleyerek) ve sonra bunu yapın. Ardından, sahte adlandırılmış dalı kaldırın. ben küçümsemek git git bazı şeyleri yapmak için tüm iç işleyişini anlamanız gerektiğinde ısrar ediyor, ama büyük önem taşıyorsun kutu o şeyleri yap. - Jon V
2.10.1+ 'de kötü bir isme sahip bir şube oluşturmak daha zor. Bir şekilde yaparsanız, şubelerinizin kısa karma sürümünü almak için git branch -v'yi kullanabilirsiniz (uzaktan kumanda için -r ekleyin). İhtiyacınız varsa tam karma elde etmek için git rev-parse <shorthash> öğesini kullanabilirsiniz. - House of Dexter


Bir şubeyi yerel olarak yeniden adlandırmak için:

git branch -m [old-branch] [new-branch]

Şimdi bu değişiklikleri uzak sunucunuzda da yaymanız gerekecek.

Silinen eski dalın değişikliklerini zorlamak için:

git push origin :[old-branch]

Yeni şube yaratma değişikliklerini zorlamak için:

git push origin [new-branch]

55
2017-08-20 06:39





Bu komutu kullanarak dalı yeniden adlandırın:

git branch -m [old_branch_name] [new_branch_name]

-m: Şubeyi yeniden adlandırır / taşır. Zaten bir şube varsa, bir hata alacaksınız.

Zaten bir dal varsa ve o şube ile yeniden adlandırmak istiyorsanız, aşağıdakileri kullanın:

 git rename -M [old_branch_name] [new_branch_name]

Yardım hakkında daha fazla bilgi için, bu komutu terminalde kullanın:

git branch --help

veya

man git branch

28
2018-04-11 06:19





Gelişmiş Git kullanıcıları manuel olarak yeniden adlandırabilir:

Rename the old branch under .git/refs/heads to the new name

Rename the old branch under .git/logs/refs/heads to the new name

Update the .git/HEAD to point to yout new branch name

26
2017-08-05 09:04