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

时间:2013-03-08 09:49:43

标签: 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
        }
    }
}

如何重置文件?

3 个答案:

答案 0 :(得分:22)

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

您可以手动更新文件,方法是决定将所有内容保存在<<<<<<< HEAD=======之间,或=======>>>>>>>之间,或两者的混合。一旦解决所有冲突,您只需提交更改。

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

git checkout yourfile

或,对于使用

的所有文件
git checkout -- .

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

git checkout --ours yourfile # Your version
git checkout --theirs yourfile # Repository version

答案 1 :(得分:6)

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

可以在this question找到有关冲突标记>>>>> ... <<<<<的说明。

有关于this 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版本。

答案 2 :(得分:0)

使用SourceTree for git来管理安装了Kdiff的构建,这有助于我真正有效地解决99%的问题。

我刚试图从.Net中的SOU文件中删除这些文件,通常用旧版本替换SOU文件会解决此问题。