2016-03-23 1 views
0

При объединении двух полных различных файлов, мерзавец изменяет файл на что-то, как показано ниже, чтобы показать, что есть конфликты между файлами:Git слияния текстовых файлов с содержанием, включая слияние синтаксиса конфликта

<<<<<<< HEAD 
[fileA's content] 
======= 
[fileB's content] 
>>>>>>> newbranch 

И я имею в виду что если я изменю fileA's content с поддельными синтаксисами:

text1 
======= 
text2 
>>>>>>> newbranch 
text3 
<<<<<<< HEAD 
text4 

при попытке объединить файл конфликт будет как:

<<<<<<< HEAD 
text1 
======= 
text2 
>>>>>>> newbranch 
text3 
<<<<<<< HEAD 
text4 
======= 
[fileB's content] 
>>>>>>> newbranch 

Вопрос

Как мерзавец знать, какой из синтаксисов являются реальными или подделка? Или содержимое выше просто нарушает процесс слияния?

+1

Git не заботится о содержимом файлов. Он добавляет разметку, когда есть конфликт, но в противном случае не использует эту разметку для принятия каких-либо решений. Вы можете свободно зафиксировать этот файл как есть, не исправляя конфликт, а git не волнует. – larsks

ответ

1

Выход файла предназначен только для просмотра изменений.

Git не заботится и ничего не делает с содержимым файла.
В реальной жизни за кулисами сохраняется дельта содержимого и генерируется полный снимок текущего хранилища, помеченного SHA-1.

Это немного сложнее, но я попытался объяснить это так просто, как могу.


выход, который вы предложили больше похож на diff3 затем diff2. Для получения более подробной информации см. Спецификации для diff2 & diff3.

Это выход из diff3:

cauliflower 
<<<<<<< HEAD 
peas 
potatoes 
||||||| merged common ancestors 
peas 
======= 
>>>>>>> topic 
tomatoes 

Как мерзавец знать, какой из синтаксисов являются г eal или подделка? Или содержимое выше просто нарушает процесс слияния?

Опять же: Git не заботится о содержании.

После слияния содержимого (и вы можете переписать весь файл), вы снова добавить его мерзавец, а затем мерзавец вычислить новый дифференциал (независимо от содержания, оставить его со всем содержанием добавленного слияние или изменение) и передать его в репозиторий.

+0

Как насчет 'diffftool', используемых при сравнении различий? Они интересуются контентом? – J3soon

+0

Они знают, как его разобрать и отобразить, соответственно, так что да. – CodeWizard

 Смежные вопросы

  • Нет связанных вопросов^_^