Разрешение конфликта Git с бинарными файлами

class Program
{
    List listOfEmp = new List();
    List listOfDepart = new List();

    public Program()
    {
        listOfDepart = new List(){
            new Department { Id = 1, DeptName = "DEV" },
            new Department { Id = 2, DeptName = "QA" },
            new Department { Id = 3, DeptName = "BUILD" },
            new Department { Id = 4, DeptName = "SIT" }
        };


        listOfEmp = new List(){
            new Employee { Empid = 1, Name = "Manikandan",DepartmentId=1 },
            new Employee { Empid = 2, Name = "Manoj" ,DepartmentId=1},
            new Employee { Empid = 3, Name = "Yokesh" ,DepartmentId=0},
            new Employee { Empid = 3, Name = "Purusotham",DepartmentId=0}
        };

    }
    static void Main(string[] args)
    {
        Program ob = new Program();
        ob.LeftJoin();
        Console.ReadLine();
    }

    private void LeftJoin()
    {
        listOfEmp.GroupJoin(listOfDepart.DefaultIfEmpty(), x => x.DepartmentId, y => y.Id, (x, y) => new { EmpId = x.Empid, EmpName = x.Name, Dpt = y.FirstOrDefault() != null ? y.FirstOrDefault().DeptName : null }).ToList().ForEach
            (z =>
            {
                Console.WriteLine("Empid:{0} EmpName:{1} Dept:{2}", z.EmpId, z.EmpName, z.Dpt);
            });
    }
}

class Employee
{
    public int Empid { get; set; }
    public string Name { get; set; }
    public int DepartmentId { get; set; }
}

class Department
{
    public int Id { get; set; }
    public string DeptName { get; set; }
}

OUTPUT

432
задан Kevin Wilson 30 May 2013 в 12:53
поделиться

5 ответов

Вы можете захотеть посмотреть с использованием R, чтобы создать базовую графику, а затем сохранить их в редактируемом формате (вроде SVG ). Затем используя более искусственное приложение для редактирования вашего SVG, чтобы сделать его красивым (вроде Inkscape ). Смотрите мой предыдущий вопрос для примера, используя Каир . Я также +1 Узнайте GGPlot2 из Шена.

-121--1259421-

GIT Checkout принимает - наши или - их вариант для таких случаев. Итак, если у вас есть конфликт слияния, и вы знаете, что вы просто хотите, чтобы файл из ветви, в которой вы объединяетесь, вы можете сделать:

$ git checkout --theirs -- path/to/conflicted-file.txt

использовать эту версию файла. Точно так же, если вы знаете, что вы хотите, чтобы ваша версия (не единственное, что объединяется), вы можете использовать

$ git checkout --ours -- path/to/conflicted-file.txt
814
ответ дан 22 November 2019 в 23:09
поделиться

Необходимо разрешить конфликт вручную (копирование файла) и затем фиксировать файл (неважно, если бы Вы скопировали его или использовали локальную версию) как это

git commit -a -m "Fix merge conflict in test.foo"

, Мерзавец обычно автоматически фиксирует после слияния, но когда это обнаруживает конфликты, это не может решить отдельно, это применяет все патчи, которые это выяснило и оставляет остальных для Вас, чтобы разрешить и фиксировать вручную. Страница справочника Слияния Мерзавца, Интенсивный курс Мерзавца-SVN или этот запись в блоге могла бы пролить некоторый свет на то, как это, как предполагается, работает.

Редактирование: Видят сообщение ниже, Вы не должны на самом деле копировать файлы сами, но можете использовать

git checkout --ours -- path/to/file.txt
git checkout --theirs -- path/to/file.txt

для выбора версии файла, который Вы хотите. При копировании / редактирование файла только будет необходимо, если Вы захотите соединение обеих версий.

отметьте ответ mipadis как корректный.

143
ответ дан VolkA 30 May 2013 в 23:53
поделиться
  • 1
    Для разглагольствования этот dll не найден, где Вы обычно щипаете dlls от в Visual Studio. Скорее необходимо перейти к папке с попурри dlls для получения его. Когда Вы делаете " Добавьте Reference" в Visual Studio перейдите к пути к файлу JaredPar, обеспеченный выше, и затем добавьте его к своему проекту. – Phil 16 July 2011 в 21:43

Я столкнулся с аналогичной проблемой (хотел вытащить фиксацию, которая включала некоторые двоичные файлы, которые вызывали конфликты при слиянии), но наткнулся на другое решение, которое можно сделать полностью с использованием git (т.е. без необходимости вручную копировать файлы). Я решил, что включу его здесь, чтобы, по крайней мере, я мог вспомнить его в следующий раз, когда он мне понадобится. :) Шаги выглядят следующим образом:

% git fetch

Это извлекает последние фиксации из удаленного репозитория (вам может потребоваться указать имя удаленной ветки, в зависимости от ваших настроек), но не пытается их объединить. Он записывает фиксацию в FETCH_HEAD

% git checkout FETCH_HEAD stuff/to/update

. Он берет копию нужных мне двоичных файлов и перезаписывает то, что находится в рабочем дереве, версией, полученной из удаленной ветви. git не пытается выполнить слияние, так что вы просто получаете точную копию двоичного файла из удаленной ветки. Как только это будет сделано, вы можете добавить / зафиксировать новую копию, как обычно.

3
ответ дан 22 November 2019 в 23:09
поделиться

Вы также можете решить эту проблему с помощью

git mergetool

, который заставляет git создавать локальные копии конфликтующего двоичного файла и запускать для них ваш редактор по умолчанию:

  • {конфликтующий } .HEAD
  • {конфликтуют}
  • {конфликтуют} .REMOTE

Очевидно, вы не можете с пользой редактировать двоичные файлы в текстовом редакторе. Вместо этого вы копируете новый файл {конфликтующий} .REMOTE поверх {конфликтующий} , не закрывая редактор. Затем, когда вы закроете редактор , git увидит, что недекорированная рабочая копия была изменена, и ваш конфликт слияния разрешен обычным способом.

118
ответ дан 22 November 2019 в 23:09
поделиться

Чтобы разрешить, сохраняя версию в текущей ветке (игнорируйте версию из ветви, в которой вы объединяетесь), просто добавьте и совершите файл:

git commit -a

, чтобы разрешить, перезаписав версию в текущей ветке с версией В филиалке, в которой вы объединяетесь, вам нужно сначала получить эту версию в рабочий каталог, а затем добавить / совершать его:

git checkout otherbranch theconflictedfile
git commit -a

подробно объяснено

16
ответ дан 22 November 2019 в 23:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: