Git merge: почему я получаю много конфликтов слияния после изменения исходного кода в Linux и Windows? - PullRequest
6 голосов
/ 28 июня 2010

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

Прежде всего, слияниедолжен был быть очень чистым, поскольку все было совершено в офисе в пятницу, и я вносил изменения в свой домашний компьютер только в субботу и воскресенье.Но когда я внес изменения в свой офисный компьютер, я столкнулся с кучей конфликтов слияния.

Я очистил конфликты слияния, но потом обнаружил, что во многих файлах (из того, что я могу сказать любой файл, который я изменил за выходные) во всех файлах было <<<<<<< HEAD" and ">>>>>>> D1/master.Например:

diff --git a/web/Web.Controller/Helpers/FormsAuthentication.cs b/web/Web.Controller/Helpers/FormsAuthentication.cs
index 8571f53..4a9c9fc 100644
-- a/web/Web.Controller/Helpers/FormsAuthentication.cs
++ b/web/Web.Controller/Helpers/FormsAuthentication.cs
@@ -10,7 +10,10 @@
    /// </summary>
    public class FormsAuthenticationUtility : IAuthenticationUtility
    {
<<<<<<< HEAD

=======
>>>>>>> D1/master
        #region IAuthentication Members

        /// <summary>

Мне удалось исправить код с помощью kdiff, сравнив его с исходным кодом, скопированным с моего домашнего компьютера, но это, похоже, совершенно не так.

Любойидеи что происходит?

Ответы [ 3 ]

4 голосов
/ 29 июня 2010

Я столкнулся с той же проблемой, когда файлы Windows были объединены с моим репозиторием Linux, так что это была проблема CRLF. Я мог бы, наконец, исправить это с помощью этого ответа . IIRC это должно было быть сделано до слияния, но это было давно, и, честно говоря, я забыл записать это ...

1 голос
/ 29 июня 2010

Это звучит как проблема CRLF при объединении: это вызвало недавнее обсуждение здесь .Возможно, вы захотите попытаться создать уменьшенный кейс с несколькими файлами, чтобы выяснить, что именно вызывает эту проблему.

1 голос
/ 28 июня 2010

У меня была такая проблема при переходе с Windows на * Nix и обратно из-за различного отношения к символам перевода строки. Git может уловить эти различия и по какой-либо причине не может слиться.

Может быть, попробовать --ignore-space-at-eol?

Edit:

Пробел на самом деле имеет значение при слиянии. Это может не иметь значения в вашем конкретном случае, но есть контексты, где это может иметь значение. Этот вопрос , кажется, касается того, что нужно сделать, чтобы разрешить конфликты гораздо лучше, чем я когда-либо мог.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...