我犯了一個錯誤,不小心正在努力掌握一段時間,現在我已經意識到自己的錯誤,我想將這些違反主人的規定移回到我自己的分期分支中。有沒有辦法從一個分支中刪除提交併將它們放入另一個分支?
這是可能的,與混帳或我將不得不手動移動文件?
我犯了一個錯誤,不小心正在努力掌握一段時間,現在我已經意識到自己的錯誤,我想將這些違反主人的規定移回到我自己的分期分支中。有沒有辦法從一個分支中刪除提交併將它們放入另一個分支?
這是可能的,與混帳或我將不得不手動移動文件?
如果你的錯誤是這樣的,主目前的樣子:
A->B->C->D
只想和你移動C
和D
到一個新的分支,這是很容易:
$ git checkout master # move to D
$ git branch new-branch # create new branch at D
$ git reset B-sha1 # reset master to B
$ git checkout new-branch # continue working on new-branch
根據什麼C
和D
引入了更改,這可能無法正常工作。例如,如果C
引入了一個新文件,git可能不會讓您檢查新分支,以免覆蓋該文件。 (當master在B
處檢出時,git認爲該文件未被跟蹤。)您可以在重置後添加git clean -xdf
,或者根據具體情況執行reset --hard
。
那麼,這是做什麼東西移動到一個不同的分支,並繼續發展?這是否允許我拯救遠程主人? – Alex 2012-07-10 14:44:14
@Alex如果您已經推送到遠程,您還有更多工作要做。如果你知道沒有其他人從這個遠程端口拉出來,你可以在那裏做一個update-ref,但是如果你不能保證你需要添加一些'revert'提交。如果你 – 2012-07-10 14:49:27
假設你做5次提交錯誤地掌握,將提交:
git checkout master
git branch temp
git rebase --onto yourbranch temp~5 temp
更新的分支:
git push . temp:yourbranch
git push . master~5:master -f
更新您的遠程主:
git push origin master -f
告訴你同事你做了什麼,所以他們可以根據你的改正來調整他們的主人。
可能的重複[如何將一組提交從一個提交到一個單獨的分支?](http://stackoverflow.com/questions/1178553/how-can-i-move-a-set-of-提交從主到分支) – Mark 2012-07-10 14:07:02