git pull之后删除远程更改

时间:2013-05-22 23:53:05

标签: git

我正在编写一些代码,匆忙中,我搞砸了,因为我必须git -reset到之前的提交。现在我已经让它工作正常了,做git push说我的当前分支在远程分支后面。我担心通过执行git pull并将更改与远程分支合并,我的代码将再次返回到错误的版本。有没有办法让我完成拒绝远程分支的更改而只保留新的分支? (我可以回去推动对遥控仓库的更改)

非常感谢

2 个答案:

答案 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

......是 - 你可能有冲突。