我正在编写一些代码,匆忙中,我搞砸了,因为我必须git -reset到之前的提交。现在我已经让它工作正常了,做git push说我的当前分支在远程分支后面。我担心通过执行git pull并将更改与远程分支合并,我的代码将再次返回到错误的版本。有没有办法让我完成拒绝远程分支的更改而只保留新的分支? (我可以回去推动对遥控仓库的更改)
非常感谢
答案 0 :(得分:3)
如果
git push -f origin <branch>
答案 1 :(得分:2)
您可以执行git push --force origin branchname
,但如果您已经共享了分支,那么这可能不是最佳解决方案。
下次,您应该还原您所关注的特定提交,而不是仅仅执行git reset --hard
并更改您的历史记录 - 或者您应该应用提示撤消您想要执行的操作。
幸运的是,git很疯狂,即使你现在拥有的东西也可以解决这个问题。
要做到这一点看起来像这样(从你最近关注的分支开始 - 让我们称之为master
):
git branch good_tree # save a branch with your recent commits
git reset --hard last_good # reset working tree to fix pushed problem
git fetch --all # update local repo with remote changes
git reset origin/master # move pointer to where remote repo's master is
# without changing working tree from last_good
git add; git commit; git push # commit fixed stuff
git checkout good_tree # rebase your changes from last_good
git rebase master # tack good_tree onto master from undone changes
git checkout master # go back to master
git merge good_tree # now you are back to where you want to be
git push # and you can push
......是 - 你可能有冲突。