Git推到错误的分支
使用git,经过一些“提交”和一些“推送”,我意识到正在使用错误的分支!
现在我必须以某种方式删除wrong_branch中的更改,并提交并推送right_branch中的更改
什么是最好的(和简单的)的方式来做到这一点?
谢谢
切换到该分支,检查git log
和git revert
单独git revert
这些提交。 一旦你完成了,切换回所需的分支,然后你可以使用git cherry-pick
从git refs中select特定的提交并将其合并到右边的分支中。
git checkout wrong_branch git revert commitsha1 git revert commitsha2 git checkout right_branch git cherry-pick commitsha1 git cherry-pick commitsha2
如果提交被分组在一起,并且没有任何提交后提交你的脏提交,你甚至可以使用git reset
将错误的分支到提交之前的状态,然后再次使用git cherry-pick
来获取提交正确的分支。
git checkout wrong_branch git reset commitsha3 #commit just before commitsha2 git checkout right_branch git cherry-pick commitsha1 git cherry-pick commitsha2
最简单的方法是使用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
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