Git推送到错误的分支

时间:2011-06-24 09:08:04

标签: git github

使用git,经过一些'commit'和几次'push'后,我意识到使用了错误的分支!

现在我必须以某种方式删除我在wrong_branch中的更改 并提交并推送right_branch中的更改

最好(也很简单)的方法是什么?

谢谢

3 个答案:

答案 0 :(得分:110)

切换到该分支,单独检查git loggit revert这些提交。完成后,切换回所需的分支,然后您可以使用git cherry-pick从git引用中选择特定提交并将其合并到右分支。

git checkout wrong_branch
git revert commitsha1
git revert commitsha2
git checkout right_branch
git cherry-pick commitsha1
git cherry-pick commitsha2

如果将提交组合在一起并且在脏提交后没有提交提交,您甚至可以使用git reset将错误的分支转换为提交之前的状态,然后再使用{{1让你的提交进入正确的分支。

git cherry-pick

答案 1 :(得分:3)

最简单的方法是使用git rebase。假设你有这个设置:

A -- B -- C -- C1 -- C2 # right branch
          \
           \-- D -- C3 -- C4 # wrong branch

您希望将更改C3,C4移动到右侧分支。

git checkout -b new_wrong_branch D
git checkout wrong_branch
git rebase D --onto right_branch
git checkout right_branch
git merge right_branch wrong_branch
git branch -d wrong_branch
git branch rename new_wrong_branch wrong_branch

现在设置为

A -- B -- C -- C1 -- C2 -- C3 -- C4 # right_branch
          \
           \ -- D # wrong_branch

然后你必须用力推动你的结果(如果还没有人与你的远程仓库同步):

git push -f remote:right_branch

答案 2 :(得分:1)

添加Dhruva答案的一些捷径

git checkout wrong_branch
git revert commitsha1

git checkout right_branch
git push right_branch

git checkout wrong_branch
git reset commitsha2 #commit just before commitsha1
git push wrong_branch -f