2011-11-10 192 views

回答

39

您可以創建一個新的分支指向當前(如果你想直接檢查出來或git checkout -b branchname)提交使用git branch branchname。這將基本上覆制你的主分支,所以你可以繼續在那裏工作。

如果您已成功複製分支,則可以使用git reset --hard commitmaster重置爲其原始點,其中commit是提交的哈希,該提交應該是主設備上的最後一個提交。

因此,例如,你有這樣的情況:

---- 1 ---- 2 ---- 3 ---- 4 ---- 5 ---- 6 
       ^    ^
       original    master 
      master commit 

所以,你已經簽出的承諾6master,你要創建一個新的分支ticket指向一個6復位時master3

git branch ticket 
git reset --hard 3 
git checkout ticket 

然後你在ticket指着犯6,而master點到3

+0

這將工作,如果你的新分支應該出來'主'。如果你需要一個不同的開發路線,你必須看看[git-rebase](http://linux.die.net/man/1/git-rebase) – che

+0

真棒。謝謝。什麼是「-b」呢? – Ramy

+1

'git checkout'中的'-b'告訴Git在檢出之前創建分支。它基本上是'git分支名稱'和'git checkout name'的快捷方式;當你想開始在某個新分支上工作時,你通常會使用它。 – poke

5

如果你有犯(說)你實現2次後,你應該已經在一個分支,然後簡單地做

git branch work_branch 
git reset --hard HEAD~2 

與提交你想回去的數量更換2。如果您想要轉移到分支以繼續工作,只需要git checkout work_branch

請參閱git rev-parse --help如果您想了解如何遍歷備份提交樹的語法HEAD~2

+0

嗨@Mark Fisher,您是什麼意思「2次」? –

+1

@adrianmann - 我的意思是如果你做了2個單獨的工作,添加更改並提交每個工作,所以你的歷史看起來像開始 - > A - > B,其中A和B是2個提交。 –

+0

多數民衆贊成,非常感謝一百萬。 –

0

創建一個新的分支從你應該有的地方,然後櫻桃選擇不正確的分支到新分支的變化。

然後,您可以刪除不好的分支,假設您尚未將其推送到其他地方並對其進行其他更改。

相關問題