Git 撤消上次提交/合并

Git 撤消上次提交/合并,git,version-control,commit,revert,Git,Version Control,Commit,Revert,我把我的git回购搞砸了。我在另一家分店做过一个专题。完成工作后,我切换到master将其合并到中,但我的合作伙伴推送了一些与我冲突的文件。在合并、冲突和推动新的更改之后,我看到我也提交了我的合作伙伴的旧更改 现在我想重做这个提交/合并。我试过了 git reset--soft HEAD ^但是当我想要推送时,我收到了一条错误消息在再次推送之前合并远程更改 有人能帮我吗?呵呵,你差点就明白了: git reset --hard HEAD^ 您的功能分支仍将指向您的工作。您不会丢失这些更改 正如

我把我的git回购搞砸了。我在另一家分店做过一个专题。完成工作后,我切换到master将其合并到中,但我的合作伙伴推送了一些与我冲突的文件。在合并、冲突和推动新的更改之后,我看到我也提交了我的合作伙伴的旧更改

现在我想重做这个提交/合并。我试过了
git reset--soft HEAD ^
但是当我想要推送时,我收到了一条错误消息
在再次推送之前合并远程更改


有人能帮我吗?

呵呵,你差点就明白了:

git reset --hard HEAD^

您的功能分支仍将指向您的工作。您不会丢失这些更改

正如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重置——硬/——软/——混合头^就可以完成这个任务

因此,当你重置了你的头部时,git会在你试图推送到原点并更新远程引用时发出抱怨,因为远程引用不是你头部的祖先。使用武力:


嘿,普拉斯,谢谢你的回答,但我想保留我推错的文件。有解决方案吗?
git reset--soft
可能会对您有所帮助。感谢您的回复adymitruk,我尝试了git
reset--hard HEAD^
,之后git推送origin+master,但我仍然收到一条错误消息
![remote rejected]master->master(pre-receive hook Dejected)
如果由于推送而导致远程提交失败,则需要告诉git使用
--force
-f
选项可以。更新答案。
git push -f
git push --force origin master