我把我的 git repo 弄乱了一点。我在一个单独的分支中开发了一个功能。完成工作后,我切换到master合并它,但是我的伙伴推送了一些与我冲突的文件。在合并、冲突和推送新更改之后,我看到我也提交了我的合作伙伴的旧更改。
现在我想重做这个提交/合并。我试过
git reset --soft HEAD^
了,但是当我想推送时,我收到了这个错误消息Merge the remote changes before pushing again
。
谁能帮我?
我把我的 git repo 弄乱了一点。我在一个单独的分支中开发了一个功能。完成工作后,我切换到master合并它,但是我的伙伴推送了一些与我冲突的文件。在合并、冲突和推送新更改之后,我看到我也提交了我的合作伙伴的旧更改。
现在我想重做这个提交/合并。我试过
git reset --soft HEAD^
了,但是当我想推送时,我收到了这个错误消息Merge the remote changes before pushing again
。
谁能帮我?
您的功能分支仍将指向您的工作。您不会丢失这些更改。
正如 plaes 所说,您可以使用
git reset --hard HEAD^
如果你想从你的分支中获取一些特定的文件而不合并,你可以查看它们:
git checkout yourbranch -- file1 file2 etc
如果您想从合并之前从 master 获得一些文件,您还可以查看这些文件:
git checkout master^ -- file3 file4 etc
这并不理想,但有时却是需要的。合并/可能/意味着您拒绝合并中任一方的某些更改。获得适当合并的最佳方法是:
git merge --no-commit yourbranch
从 master 开始,然后从上面运行 git checkout 命令,最后提交:
git add . -A
git commit
当你现在推送这个分支时,你需要添加force
选项
git push --force
或者
git push -f
希望这可以帮助。
呵呵,你几乎想通了:
git reset --hard HEAD^
这里的问题是您想要撤消已经推送到中央存储库的更改。如果您一开始没有推送它们,那么 git reset --hard/--soft/--mixed HEAD^ 就可以了。
因此,当您重置 HEAD 时,当您尝试推送到原点并更新不是您的 HEAD 祖先的远程 ref 时,git 会抱怨。动武:
git push --force origin master
改用 git reset --hard origin/master ,这将执行硬重置以及删除合并。取自链接撤消尚未推送的 Git 合并