2017-05-30 167 views
1

錯誤地,我向主分支提交了多個提交。現在我想清理master分支並將所有提交從它移到一個全新的分支。我怎麼做?我發現了幾個類似的問題,但似乎沒有提出所有以下提交。我做了以下操作:如何將所有提交從特定提交移動到新分支

git checkout -b bulk-work <hash of the first commit I made> 

我期待在第一次提交之後移動到新的分支之後,它會移動所有提交。相反,它將特定的提交及其父提交給新提交。我該如何做相反的事情,即將第一次提交和所有提交之後移動到新分支?

+0

這就是'git rebase'所做的,將提交到分支。 – t0mm13b

+0

git rebase會將一個分支的歷史記錄移動到已存在的第二個分支的歷史記錄中。我相信OP只是想將主分支的所有提交移動到一個新分支(git branch bulk-work)中,然後將主分支回滾到他/她意外提交到主分支的點(git reset --hard )。如果這是正確的理解,那麼我的解決方案將起作用。 –

+0

如果它對你有效,Shijan Shrestha,請將我的答案標記爲正確。謝謝! –

回答

2

如果我理解你想要正確地做什麼,我這樣做:

git checkout -b bulk-work 

就像你有點過那裏。這本質上是所有主分支的副本。然後,我會做到這一點:

git checkout master 
git reset --hard <the hash of a commit to reset to> 

這使得它,這樣你的主分支倒帶一路你把任何哈希在「<>」。


我認爲你可以做到這一點的方式來簡化這個:

git branch bulk-work 
git reset --hard <hash> 

由於第一個命令我做使得一個新的分支,並檢查出來。


做這些後,一定要籤您的大量工作分支繼續工作,直到你準備合併,我假設你從那裏知道的。

+0

我測試了這個,並且它工作正常。 –

+0

工作!非常感謝你。你能不能提出這個問題?我認爲這是一種常見的情況,其他人可能會覺得有用。 –

相關問題