17

在 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
        }
    }
}

如何重置我的文件?


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

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

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

git checkout yourfile

或者,对于所有文件使用

git checkout -- .

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

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

3 回答 3

28

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

您可以简单地手动更新您的文件,方法是决定将所有内容保留在 and 之间<<<<<<< HEAD=======或者在=======and之间,或者两者>>>>>>>兼而有之。一旦你解决了所有的冲突,你只需要提交你的更改。

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

git checkout yourfile

或者,对于所有文件使用

git checkout -- .

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

git checkout --ours yourfile # Your version
git checkout --theirs yourfile # Repository version
于 2013-03-08T09:53:20.960 回答
8

alestanis 已经回答了你的问题。仍然为了方便查找:

这些冲突标记的解释>>>>>......<<<<<可以在这个问题上找到。

在这个 Q上有更多关于合并的信息。

并且git help merge也非常有帮助:

如何解决冲突

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

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

· 解决冲突。Git 将标记工作树中的冲突。将文件编辑成形状并将git add它们编辑到索引中。用来敲定 git commit交易。

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

· 使用合并工具。 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 版本。

于 2013-03-08T10:02:43.753 回答
0

Using SourceTree for git to manage my builds with Kdiff installed has helped me resolve 99% of these issues really efficiently.

I'm just left with trying to remove these from my SOU file in .Net, usually replacing the SOU file with an older version resolves this.

于 2016-10-25T14:01:59.490 回答