我的git repo有点混乱。我在另一个分支做过一个专题。完成工作后,我切换到master并将其合并到,但我的合作伙伴推了几个文件,这些文件与我的文件发生冲突。合并后,冲突和推动新的变化,我看到我也犯了我的合作伙伴的旧的变化。现在我想重做这个提交/合并。我尝试了git reset --soft HEAD^,但当我想推时,我得到了这个错误消息Merge the remote changes before pushing again。有人能帮帮我吗?
git reset --soft HEAD^
Merge the remote changes before pushing again
uurity8g1#
你的特性分支仍然会指向你的工作。您不会丢失这些更改。就像plaes说的,你可以用
git reset --hard HEAD^
字符串如果你想从你的分支中抓取一些特定的文件而不合并,你可以 checkout 它们:
git checkout yourbranch -- file1 file2 etc
型如果你想从合并前的master中获取一些文件,你也可以 checkout 这些文件:
git checkout master^ -- file3 file4 etc
型这并不理想,但有时候是需要的。merge /may/意味着您拒绝合并中任何一方的某些更改。实现正确合并的最佳方法是:
git merge --no-commit yourbranch
型然后运行上面的git checkout命令,最后提交:
git add . -A git commit
型现在推送此分支时,需要添加force选项
force
git push --force
型或者是
git push -f
型希望这对你有帮助。
b09cbbtk2#
呵呵,你差点就想明白了:
字符串
vktxenjb3#
这里的问题是,您希望撤消已经推送到中央存储库的更改。如果你一开始就没有推送它们,一个git reset --hard/--soft/--mixed HEAD^就可以完成这个任务。所以当你重置了你的HEAD后,当你试图推送到源并更新不是你的HEAD祖先的远程引用时,git会抱怨。Use --force:
git push --force origin master
332nm8kg4#
使用git reset --hard origin/master代替,这将执行硬重置以及删除合并。来自链接Undo a Git merge that hasn't been pushed yet
b5lpy0ml5#
让我为那些不太了解git的用户简化一下,比如我:D如果你想取消合并提交并将其从远程git中删除。关注:
字符串或者是
git reset --merge hash-of-commit-before-merge i.e. c4ab5de
型现在您已经成功地在本地重置,是时候在远程更新/同步了
git push --force // this will remove the merge or afterwards commits
型
5条答案
按热度按时间uurity8g1#
你的特性分支仍然会指向你的工作。您不会丢失这些更改。
就像plaes说的,你可以用
字符串
如果你想从你的分支中抓取一些特定的文件而不合并,你可以 checkout 它们:
型
如果你想从合并前的master中获取一些文件,你也可以 checkout 这些文件:
型
这并不理想,但有时候是需要的。merge /may/意味着您拒绝合并中任何一方的某些更改。实现正确合并的最佳方法是:
型
然后运行上面的git checkout命令,最后提交:
型
现在推送此分支时,需要添加
force
选项型
或者是
型
希望这对你有帮助。
b09cbbtk2#
呵呵,你差点就想明白了:
字符串
vktxenjb3#
这里的问题是,您希望撤消已经推送到中央存储库的更改。如果你一开始就没有推送它们,一个git reset --hard/--soft/--mixed HEAD^就可以完成这个任务。
所以当你重置了你的HEAD后,当你试图推送到源并更新不是你的HEAD祖先的远程引用时,git会抱怨。Use --force:
字符串
332nm8kg4#
使用git reset --hard origin/master代替,这将执行硬重置以及删除合并。来自链接Undo a Git merge that hasn't been pushed yet
b5lpy0ml5#
让我为那些不太了解git的用户简化一下,比如我:D
如果你想取消合并提交并将其从远程git中删除。关注:
字符串
或者是
型
现在您已经成功地在本地重置,是时候在远程更新/同步了
型