GIT corrupt files (<<<<<<<<HEAD)

24,814

Solution 1

What you had wasn't trouble but conflicts. This happens when the files are modified by two different persons at the same place (you both add/remove/modify things inside the same lines).

You can simply update your files manually, by deciding to keep everything between <<<<<<< HEAD and =======, or between ======= and >>>>>>>, or some mix of the two. Once you resolve all your conflicts, you just need to commit your changes.

To discard local changes on a file, you can do

git checkout yourfile

or, for all files using

git checkout -- .

You can also decide, for each file, if you want to keep your version or the repository version with

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

Solution 2

Your Q is answered best by alestanis, already. Still for easy lookup:

An explanation of those conflict markers >>>>> ... <<<<< can be found at this question.

There's more info about merging at this Q.

And git help merge is quite explicitly helpful as well:

HOW TO RESOLVE CONFLICTS

After seeing a conflict, you can do two things:

· Decide not to merge. The only clean-ups you need are to reset the index file to the HEAD commit to reverse 2. and to clean up working tree changes made by 2. and 3.; git merge --abort can be used for this.

· Resolve the conflicts. Git will mark the conflicts in the working tree. Edit the files into shape and git add them to the index. Use git commit to seal the deal.

You can work through the conflict with a number of tools:

· Use a mergetool. git mergetool to launch a graphical mergetool which will work you through the merge.

· Look at the diffs. git diff will show a three-way diff, highlighting changes from both the HEAD and MERGE_HEAD versions.

· Look at the diffs from each branch. git log --merge -p <path> will show diffs first for the HEAD version and then the MERGE_HEAD version.

· Look at the originals. git show :1:filename shows the common ancestor, git show :2:filename shows the HEAD version, and git show :3:filename shows the MERGE_HEAD version.

Share:
24,814

Related videos on Youtube

ErikTJ
Author by

ErikTJ

Updated on July 09, 2022

Comments

  • ErikTJ
    ErikTJ almost 2 years

    I have this in my files after some trouble with 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
            }
        }
    }
    

    How can i reset my files?

  • ErikTJ
    ErikTJ about 11 years
    Ok, thanks. I will accept this, but can i chose to keep all my local changes (im moving back to a really old repo and many files are affected)?
  • alestanis
    alestanis about 11 years
    @ErikTJ You shouldn't decide to do something on all files. The best thing, even if it's a bit annoying, is to look at each file and decide according to what git points out as conflicts.

Related