Слияние разрешение конфликтов


когда в Git возникает конфликт слияния, в конфликтующие файлы вставляется мусор, подобный следующему. Три вопроса:

  1. как Вы читаете эти заметки?
  2. какие стратегии следует использовать при исправлении этих конфликтов слияния?
  3. есть ли инструмент GUI для Mac, который знает, как читать эти файлы и отображать две версии бок о бок, чтобы облегчить решение проблемы?

Примечание: В случае уместно, я использую клиент GUI Mac GitHub.

5 55

5 ответов:

все что между <<<<<< и ====== происходит от HEAD ревизия, которая является зафиксированным состоянием перед началом операции слияния (git merge будет жаловаться, если дерево грязное, поэтому оно должно быть эквивалентно вашему рабочему каталогу).

части между ====== и >>>>>> исходят из версии слияния. Текст после >>>>>> - Это комментарий фиксации, который ввел конфликтующее изменение.

что есть маркер конфликта означает что базовая версия этого файла отличается от "новой" версии. Базовая версия (последний общий предок) не показано.

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

теперь есть лучшее решение, чем пытаться читать маркеры тарабарщины, которые Git вставляет в ваши файлы. Калейдоскоп 2, второй выпуск Black Pixel их инструмента diff, теперь также является инструментом слияния. Это не бесплатно, но это прекрасно работает.

после установки Kaleidoscope 2, это очень просто интегрировать с Git. Откройте Калейдоскоп и в строке меню выберите Калейдоскоп > интеграция...

Kaleidoscope's Integration menu option.

затем вы увидите это окно. Просто выберите Git из левой навигационной системы, а затем установите ksdiff инструмент командной строки, а затем сделать Калейдоскоп git по умолчанию diff и инструмент слияния.

Kaleidoscope's Git Integration dialog.

наконец, как только у вас есть конфликт слияния в Git, просто перейдите в командную строку и выполните git mergetool. Теперь конфликт легко читается. Наслаждаться.

Kaleidoscope sane view for merge conflicts.

<<<< HEAD #Where the conflict starts

#Previous Revision

========== # The point where things look iffy

#Things that changed

>>>>> New Commit # Point where the conflict ends

Xcode Mac поставляется с FileMerge, который можно получить в командной строке с помощью opendiff.

git mergetool -t opendiff

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

также посмотреть git mergetool команда-если у вас установлен один из предустановленных инструментов или настроен какой-либо другой инструмент, он откроет инструмент для разрешения http://schacon.github.com/git/git-mergetool.html

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

когда у вас есть две ветви с изменениями в один и тот же файл, и вы пытаетесь объединить их, произойдет конфликт слияния. Чтобы увидеть список конфликтующих файлов, запустите git status на ваш терминал.

конфликтующие строки файлов будут отмечены визуальными индикаторами: <<<<< - конфликт начинается после этой строки. ===== - разделяет изменения от HEAD и merging_branch. >>>>> - конец конфликтных строк.

<<<<<<< HEAD
conflicted text from HEAD
=======
conflicted text from merging_branch
>>>>>>> merging_branch

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

библиографическая ссылка на статью: git merge.