2012-07-10 87 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 

告诉你同事你做了什么,所以他们可以根据你的改正来调整他们的主人。

相关问题