2008-08-22 165 views
98

可能有多種方法來問這個問題,所以這裏是對問題的解釋。我一直在做主人並做了一些事情,然後決定暫時擱置這項工作。我支持了一些提交,然後在開始我的垃圾工作之前分支。實際上,這工作得很好,我現在有一個不同的分支作爲我的主要開發分支。我想知道我怎麼能改變事物,所以我再次在主人身上工作,但它沒有我的垃圾工作,並說工作是在不同的分支上。在git中切換分支名稱

這可以被問到/解決的一些方法: 如何重命名我的主分支到其他東西,然後重命名其他東西來掌握? 如何備份master,然後導致我備份的所有提交都在不同的分支上?

感謝所有(快速)回答!他們都很好。

回答

140

除了其他評論,你可能會發現-m(move)切換到git-branch有幫助。你可以你的老東家重命名爲別的東西,那麼你的新的分支重新命名爲大師:

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

這也適用於重命名你當前的分支! :) – Tarrasch 2012-07-27 11:47:03

+0

根據您的工作流程,您可能還想更改.git/config中的任何分支引用。我改變了`[branch'crap_work']`讀取`[branch'master']`,這樣master仍然會與'origin/master`同步。當然,這兩個回購的狀態是這樣的,這仍然是有道理的。 – Eponymous 2012-09-17 03:56:30

8

這是比較容易的:

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

葉氏,最後完全是可選的 - `git的結帳-b`創建分支**和**使其生效。 – incarnate 2010-11-11 15:07:18

15

開始對master,創建一個名爲in-progress分支,然後重新master到一個較早的承諾。

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

我看不出有什麼理由被拒絕。在我瞭解分支機構之前,我自己做了幾次,並且意識到主人並不是一成不變的永久名稱。 – skiphoppy 2008-11-07 21:22:31

32

我想你應該考慮不同的發展戰略,以防止類似的問題。似乎最適合我的一種做法是,不要直接在我的主分支上進行開發。無論我做了改變,我總是創造新的代碼一個新的分支:

 
git checkout -b topic/topic_name master 

從那裏,我可以推了改變公共庫:

 
git push pu topic/topic_name 

或最終只是合併它放回我的主分支:

 
git checkout master && git merge topic/topic_name 

如果確實需要回去的時間較舊點,並設置爲你的主人,你可以將當前分支別的重命名爲東西,然後檢查舊版本是你的主人:

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

這將你的主人設置爲任意點一步到位:

git checkout -B master new_point