2012-07-10 85 views
1

我犯了一個錯誤,不小心正在努力掌握一段時間,現在我已經意識到自己的錯誤,我想將這些違反主人的規定移回到我自己的分期分支中。有沒有辦法從一個分支中刪除提交併將它們放入另一個分支?

這是可能的,與混帳或我將不得不手動移動文件?

+0

可能的重複[如何將一組提交從一個提交到一個單獨的分支?](http://stackoverflow.com/questions/1178553/how-can-i-move-a-set-of-提交從主到分支) – Mark 2012-07-10 14:07:02

回答

1

如果你的錯誤是這樣的,主目前的樣子:

A->B->C->D 

只想和你移動CD到一個新的分支,這是很容易:

$ 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 

根據什麼CD引入了更改,這可能無法正常工作。例如,如果C引入了一個新文件,git可能不會讓您檢查新分支,以免覆蓋該文件。 (當master在B處檢出時,git認爲該文件未被跟蹤。)您可以在重置後添加git clean -xdf,或者根據具體情況執行reset --hard

+0

那麼,這是做什麼東西移動到一個不同的分支,並繼續發展?這是否允許我拯救遠程主人? – Alex 2012-07-10 14:44:14

+0

@Alex如果您已經推送到遠程,您還有更多工作要做。如果你知道沒有其他人從這個遠程端口拉出來,你可以在那裏做一個update-ref,但是如果你不能保證你需要添加一些'revert'提交。如果你 – 2012-07-10 14:49:27

0

假設你做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 

告訴你同事你做了什麼,所以他們可以根據你的改正來調整他們的主人。

相關問題