仍然存在冲突,但GIT显示“无需合并文件”

8
我有两台笔记本电脑,它们都在主分支上工作。今天早上我在使用另一台电脑之前忘记推送对分支所做的更改。所以我有两个不同版本的代码。于是我从第二台笔记本电脑推送了代码,然后在第一台笔记本电脑中尝试将该版本合并到远程版本中。
我尝试合并但我认为我搞砸了。我有以下代码:
<<<<<<< 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

是否可以回退到合并之前的早期阶段?或者以某种方式解决这些错误合并的文件?


1
尝试使用 git checkout -m <file> 命令,然后执行 git mergetool - Andrew C
1
@AndrewC 仍然显示“没有需要合并的文件” - basickarl
2
你提交了带有合并冲突标记的文件吗?如果是,你可能需要回到坏的合并之前重置以再次尝试。 - Andrew C
4个回答

4
你的文件已经进入了暂存区。为确保,请检查以下:
git ls-files --stage <file>

然后使用checkout-m选项将其作为未合并文件添加回来。

git checkout -m <file>

1
你也可以使用 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

0

听起来你在文件中添加了+提交了带有git冲突标记的更改。这本身并不是一个很大的问题(我们都做过)。我认为你有两个主要选择:

1)在文件中搜索类似于"<<<<","====",">>>>"的模式,并手动评估和修复每个冲突,然后简单地提交这些更改。

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

git revert -m 1 <你的SHA在这里>

然后再次执行合并,但这次在输入git add之前确保所有的git冲突标记都已解决,因为这个命令表示你已经解决了冲突。

附注:如果你想在执行回滚之前查看要回滚到的提交,请输入git checkout <你的SHA在这里>并查看一下。一旦你确定这就是你想要的位置,输入git checkout master返回到原来的位置。


-1

点击这里阅读全部内容:如何还原到旧的提交记录

对于您来说相关的部分是 git reflog,它将帮助您回到您修改 HEAD 的任何所需时间点。



git reflog

您总是可以使用reflog
git reflog会显示更新了HEAD的任何更改,并检出所需的reflog条目将把HEAD设置回该提交。

git reflog
git checkout HEAD@{...}

这将使您回到所需的提交记录

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接