GIT损坏的文件(<<<<<<<< HEAD)

Eri*_*kTJ 14 git git-merge merge-conflict-resolution

在VS2012 git-plugin出现问题后,我在我的文件中有这个:

using Microsoft.VisualStudio.TestTools.UnitTesting;
<<<<<<< HEAD
using NHibernate;
=======
>>>>>>> dd2c3d7dfe81074e7c5a73f8e4ca2584481a74f1

namespace Controll.Hosting.Tests
{
[TestClass]
public class TestBase
{
<<<<<<< HEAD
    protected ISessionFactory SessionFactory;

    [TestInitialize]
    public void InitializeTestBase()
    {
            SessionFactory = NHibernateHelper.GetSessionFactoryForMockedData();
=======
    [ClassInitialize]
    public void InitializeTest()
    {
        Console.WriteLine("Settings NHibernateHelper.IsInTesting -> True");
        NHibernateHelper.IsInTesting = true;
>>>>>>> dd2c3d7dfe81074e7c5a73f8e4ca2584481a74f1
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我该如何重置我的文件?

ale*_*nis 23

你所拥有的并不是麻烦而是冲突.当文件被同一个地方的两个不同的人修改时(在相同行中添加/删除/修改内容),就会发生这种情况.

你可以简单地手动更新文件,通过决定让之间的一切<<<<<<< HEAD=======之间,或者=======>>>>>>>,或两者的结合.一旦你解决所有的冲突,你只需要提交更改.

要放弃文件的本地更改,您可以执行此操作

git checkout yourfile
Run Code Online (Sandbox Code Playgroud)

或者,对于所有使用的文件

git checkout -- .
Run Code Online (Sandbox Code Playgroud)

您还可以为每个文件决定是否要保留您的版本或存储库版本

git checkout --ours yourfile # Your version
git checkout --theirs yourfile # Repository version
Run Code Online (Sandbox Code Playgroud)


cfi*_*cfi 8

你的Q已经被alestanis最好地回答了.仍然容易查找:

这些冲突标记的解释>>>>>...... <<<<<,可以发现这个问题.

有关于合并此Q的更多信息.

而且git help merge非常明确有用:

如何解决冲突

看到冲突后,你可以做两件事:

·决定不合并.您需要的唯一清理是将索引文件重置为HEAD提交以反转2.并清除由2.和3进行的工作树更改.git merge --abort可以用于此.

·解决冲突.Git将标记工作树中的冲突.将文件编辑为形状,将git add它们编辑为索引.使用 git commit帮你搞定.

您可以使用许多工具解决冲突:

·使用mergetool. git mergetool启动图形合并工具,它将帮助您完成合并.

·看看差异. git diff 将显示三向差异,突出显示HEAD和MERGE_HEAD版本的变化.

·查看每个分支的差异. git log --merge -p <path>将首先显示HEAD版本的差异,然后显示MERGE_HEAD版本.

·看原件. git show :1:filename显示共同的祖先,git show :2:filename显示HEAD版本,并git show :3:filename显示MERGE_HEAD版本.