有没有办法从一个分支中删除提交并将它们放入另一个分支?

时间:2012-07-10 13:58:14

标签: git

我犯了一个错误,不小心承诺掌握了一段时间,现在我已经意识到我的错误,我想把这些提交从主人那里移回我自己的分期分支。

这可能与git有关,还是我不得不手动移动文件?

2 个答案:

答案 0 :(得分: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可能不允许您检查新分支,以免覆盖文件。 (当在B签出master时,git认为该文件未被跟踪。)您可以在重置后添加git clean -xdf,或根据具体情况reset --hard进行。{/ p>

答案 1 :(得分: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

告诉你的同事你做了什么,这样他们就可以根据你的纠正调整他们的主人。