仍有冲突,但git说"没有文件需要合并"

时间:2016-03-29 20:42:04

标签: git

我有两台笔记本电脑,每台都在主分公司工作。今天早上,我忘了在另一台笔记本电脑上工作之前推动对分支的更改。所以我有两个不同版本的代码。所以我从第二台笔记本电脑推出了代码,然后在第一台笔记本电脑上尝试将该版本合并到远程版本中。

我试图合并,但我想我搞砸了。我有以下代码:

<<<<<<< HEAD
.publicHome-input-neutral {
=======
.signin-input {
>>>>>>> fae264c582726a42c3d09f2ffbbe5b429a471598
    line-height: 40px;
    height: 40px;
    font-size: 18px;
    padding: 0px 16px;
    border: 1px solid @color-instanty-blue;
    border-radius: 6px;
    background: #ffffff;
    text-align: center;
    width: 250px;
    color: @color-text-dark;
}

<<<<<<< HEAD
=======
.signin-input.ng-invalid {
    border-color: red;
}

你可以看到它仍然很混乱。我安装了p4merge并尝试通过git mergetool启动它。我收到了No files need merging的消息。

在我搞砸合并之前,可以恢复到早期阶段吗?或以某种方式解决这些错误合并的文件?

4 个答案:

答案 0 :(得分:0)

听起来您在文件中使用git冲突符号添加了+已提交的更改。这本身并不是一个大问题(我们都已经完成了)。我有两个主要选择:

1)在文件中搜索“&lt;&lt;&lt;&lt;&lt;”,“====”,“&gt;&gt;&gt;&gt;”的模式并手动评估和修复每个冲突,然后只需提交这些更改。

2)在合并之前恢复到。为此,只需输入git log,找到执行合并的提交,并将该提交的SHA复制到剪贴板,然后输入:

git revert -m 1 <your SHA here>

然后再次执行合并,但这次确保在输入git add之前所有git冲突符号,因为此命令表明您已解决冲突。

PS。如果你想查看你将要恢复的提交,在实际执行恢复之前,只需输入git checkout <your SHA here>并浏览一下即可。一旦您对自己想要的地方感到满意,请输入git checkout master以回到原来的位置。

答案 1 :(得分:0)

您的文件最终位于暂存区域。确保使用

检查
git ls-files --stage <file>

然后使用-m中的checkout选项将其重新添加为未合并的文件。

git checkout -m <file>

答案 2 :(得分:0)

你也可以

git difftool

它会一一为您提供文件,您可以手动解决。当自动合并失败或冲突太难解决时,它很有用。 但是你必须确保它设置如下,下面的例子是在mac中进行Beyond compare

git config --global diff.tool bc
git config --global difftool.prompt false
git config --global difftool.bc trustExitCode true
git config --global merge.tool bc
git config --global mergetool.bc trustExitCode true

答案 3 :(得分:-1)

在这里阅读全部内容:How to revert to old commit

您的相关部分是git reflog,它可以让您回到修改HEAD的任何所需时间点。

git reflog

您也可以随时使用reflog git reflog将显示更新HEAD的任何更改,并且检出所需的reflog条目会将HEAD设置回此提交。

git reflog
git checkout HEAD@{...}

这会让你回到你想要的提交

enter image description here