与git合并时我犯了一个错误。我有一个主分支和另一个名为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
我认为这应该是我手动解决冲突的原因。
但我不确定我是否错误地将主人与火星合并了一些东西。如果是这样,火星分支就会被污染。
无论如何,我可以确认我的本地火星没有与主人合并吗? (它不是连续的)。
非常感谢。
答案 0 :(得分:3)
您可以恢复到之前的提交,忽略任何更改:
git reset --hard HEAD
其中HEAD是当前分支中的最后一次提交。
如果你想获得远程火星分支
git reset --hard origin/mars
答案 1 :(得分:0)
git中没有任何东西丢失,只要你没有推动任何东西,你就可以安全地进行大量的提交图操作。
检查日志(或使用gitk --all
)以找出分支指针的用途。然后,如果需要,请将它们更改为以前使用git branch -f <branchname> <commit>
的内容。
答案 2 :(得分:0)
如果您只是想检查是否存在差异(在mars
上时):
git diff origin/mars
如果存在差异,您会注意到它们。
如果存在差异或确保您的本地mars
分支与远程mars
分支完全相同,请执行
git reset --hard origin/mars
<强>小心!这会将对mars
的任何本地更改丢弃,并使其与origin/mars
完全相同。
答案 3 :(得分:0)
在git中,当您尝试合并并且存在冲突时,它不会创建提交。这意味着git status
导致的任何更改都是您不想要的更改。使用git log
验证上次提交是您想要的提交。
如果git status
产生结果,请执行git checkout *
,使用最新结帐覆盖已更改的文件。假设您已经在火星分支上。
如果git status
没有输出,请按照原先的预期继续执行git merge origin/mars
命令。