Слияние разрешение конфликтов
когда в Git возникает конфликт слияния, в конфликтующие файлы вставляется мусор, подобный следующему. Три вопроса:
- как Вы читаете эти заметки?
- какие стратегии следует использовать при исправлении этих конфликтов слияния?
- есть ли инструмент GUI для Mac, который знает, как читать эти файлы и отображать две версии бок о бок, чтобы облегчить решение проблемы?
Примечание: В случае уместно, я использую клиент GUI Mac GitHub.
5 ответов:
все что между
<<<<<<
и======
происходит отHEAD
ревизия, которая является зафиксированным состоянием перед началом операции слияния (git merge
будет жаловаться, если дерево грязное, поэтому оно должно быть эквивалентно вашему рабочему каталогу).части между
======
и>>>>>>
исходят из версии слияния. Текст после>>>>>>
- Это комментарий фиксации, который ввел конфликтующее изменение.что есть маркер конфликта означает что базовая версия этого файла отличается от "новой" версии. Базовая версия (последний общий предок) не показано.
если вы хотите более удобное слияние и иметь доступный графический интерфейс, я предлагаю вам взглянуть на kdiff3.
теперь есть лучшее решение, чем пытаться читать маркеры тарабарщины, которые Git вставляет в ваши файлы. Калейдоскоп 2, второй выпуск Black Pixel их инструмента diff, теперь также является инструментом слияния. Это не бесплатно, но это прекрасно работает.
после установки Kaleidoscope 2, это очень просто интегрировать с Git. Откройте Калейдоскоп и в строке меню выберите Калейдоскоп > интеграция...
затем вы увидите это окно. Просто выберите Git из левой навигационной системы, а затем установите
ksdiff
инструмент командной строки, а затем сделать Калейдоскоп git по умолчанию diff и инструмент слияния.наконец, как только у вас есть конфликт слияния в Git, просто перейдите в командную строку и выполните
git mergetool
. Теперь конфликт легко читается. Наслаждаться.
<<<< 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.