web-dev-qa-db-ja.com

GITの破損したファイル(<<<<<<<< HEAD)

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

ファイルをリセットするにはどうすればよいですか?

14
ErikTJ

あなたが持っていたのはトラブルではなく競合でした。これは、ファイルが同じ場所で2人の異なる人によって変更された場合に発生します(両方とも同じ行内で物事を追加/削除/変更します)。

すべてを<<<<<<< HEAD=======の間、=======>>>>>>>の間、またはその2つを組み合わせて保持することを決定することにより、ファイルを手動で更新するだけです。すべての競合解決したら、変更をコミットする必要があります。

ファイルのローカル変更を破棄するには、次のようにします。

git checkout yourfile

または、を使用するすべてのファイルに対して

git checkout -- .

ファイルごとに、自分のバージョンとリポジトリのバージョンのどちらを保持するかを決定することもできます。

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

あなたのQは、すでにalestanisによって最もよく答えられています。それでも簡単に検索できます:

これらの競合マーカー>>>>> ... <<<<<の説明は、 この質問 にあります。

このQ でのマージに関する詳細情報があります。

また、git help mergeも非常に明確に役立ちます。

競合を解決する方法

競合を確認した後、次の2つのことができます。

・マージしないことを決定します。必要なクリーンアップは、インデックスファイルをHEAD commit to reverse 2.にリセットし、2。および3.によって行われた作業ツリーの変更をクリーンアップすることだけです。; git merge --abortこれに使用できます。

・競合を解決します。 Gitは、作業ツリーの競合をマークします。ファイルを形に編集し、インデックスにgit addします。 git commitを使用して取引を成立させます。

いくつかのツールを使用して、競合を回避できます。

・mergetoolを使用します。 git mergetoolは、マージを実行するグ​​ラフィカルなマージツールを起動します。

・diffを見てください。 git diffは、HEADバージョンとMERGE_HEADバージョンの両方からの変更を強調表示して、3方向の差分を表示します。

・各ブランチからの差異を確認します。 git log --merge -p <path>は、最初にHEADバージョン、次にMERGE_HEADバージョンの差分を表示します。

・オリジナルを見てください。 git show :1:filenameは共通の祖先を示し、git show :2:filenameはHEADバージョンを示し、git show :3:filenameはMERGE_HEADバージョンを示します。

8
cfi

SourceTree for gitを使用してKdiffをインストールしたビルドを管理することで、これらの問題の99%を非常に効率的に解決できました。

.NetのSOUファイルからこれらを削除しようとすると、通常、SOUファイルを古いバージョンに置き換えるとこれが解決されます。

0
Dan