2

我在与 git 合并时犯了一个错误。我有一个 master 分支和另一个名为 mars 的分支。

master 分支包含非常旧的代码,我不想使用它。但是,当我尝试获取最新的火星代码时,我做到了:

git fetch
git merge origin/master       <------ This is a mistake as I should use "git merge origin/mars"

最后一个命令因合并失败而失败,并要求我解决冲突。我解决了冲突并做了

git stash
git stash drop

我认为这应该放弃我刚刚手动解决的冲突。

但我不确定我是否错误地将某些东西从 master 合并到了 mars 。如果是这样,火星分支被污染了。

无论如何我可以确认我的本地火星没有与主人的任何东西合并吗?(它没有被污染)。

非常感谢。

4

4 回答 4

3

您可以恢复到以前的提交,忽略任何更改:

git reset --hard HEAD

其中 HEAD 是当前分支中的最后一次提交。

如果你想获得远程火星分支

git reset --hard origin/mars
于 2013-10-09T11:48:04.477 回答
0

如果您只想检查是否存在差异(在 on 时mars):

git diff origin/mars

如果存在差异,您会注意到它们。

如果存在差异或确保您的本地分支与远程分支mars完全相同,请执行mars

git reset --hard origin/mars

小心!这将丢弃对 的任何本地更改,mars并使其与origin/mars.

于 2013-10-09T11:59:54.353 回答
0

在 git 中什么都没有丢失,而且只要你没有推送任何东西,你就可以安全地进行大量的提交图手术。

检查日志(或使用gitk --all)来找出分支指针是什么以及曾经是什么。然后,如果需要,将它们更改为以前的git branch -f <branchname> <commit>.

于 2013-10-09T11:45:15.710 回答
0

在 git 中,当您尝试合并并且存在冲突时,它不会创建提交。这意味着由此产生的任何更改git status都是您不想要的更改。验证最后一次提交是您想要的git log

如果git status产生结果,请通过执行git checkout *. 这假设您已经在火星分支上。

如果 没有输出,请按照最初的预期git status继续执行您的命令。git merge origin/mars

于 2013-10-09T13:10:27.653 回答