Объединить конфликт в .gitignore

У меня есть 2 ветки, master и newfeature. Когда я хочу объединить newfeature в master, я использовал:

git checkout master
git merge newfeature

Я получаю сообщение об ошибке:

Auto-merging .gitignore
CONFLICT (content): Merge conflict in .gitignore
Automatic merge failed; fix conflicts and then commit the result.

Я открыл .gitignore, и теперь он выглядит как беспорядок с последней частью файла, похожей на

<<<<<<< HEAD
public/img/ignore
=======
public/img/profiles
public/blog
public/recommendation
>>>>>>> newfeature

Что случилось, и как это должно быть исправлено, чтобы я мог объединить ветвь в master?

Ответы

Ответ 1

Вы отредактировали .gitignore в обеих ветвях. Теперь git не уверен, какие строки в каждой копии являются правильными, поэтому он просит вас разрешить их.

Строки:

<<<<<<< HEAD
public/img/ignore
=======

То, что появляется в копии файла в главном файле.

и

=======
public/img/profiles
public/blog
public/recommendation
>>>>>>> newfeature

в ветке newfeature

Вам нужно просто отредактировать файл, как вы хотите, чтобы он наконец появился. Тогда...

git add .gitignore
git commit

Ответ 2

Просто отредактируйте файл .gitignore для разрешения конфликта:

До

<<<<<<< HEAD
public/img/ignore
=======
public/img/profiles
public/blog
public/recommendation
>>>>>>> newfeature

После

public/img/ignore
public/img/profiles
public/blog
public/recommendation

Тогда:

git add .gitignore

git commit

Сообщение автогенерированного фиксации должно появиться, принять его (сохранить и закрыть) и сделать.

Ответ 3

Случилось так, что произошел конфликт слияния: две ветки меняли файл "в одно и то же время" в разных потоках. Вы можете увидеть изменения, которые другая ветка сделала в разделе "newfeature", а другая в разделе HEAD.

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

Теперь, что я сказал выше, делает слияние вручную, "вручную". Возможно, это проще всего понять. Вы также можете использовать команду git mergetool, чтобы сделать это с помощью визуального инструмента, если он настроен, или использовать "git merge" с некоторой стратегией, которая расскажет ему, как справиться с конфликтом.

Ответ 4

Используйте git mergetool для разрешения конфликта (или просто исправьте его самостоятельно, это не особо трудный случай для решения), а затем повторите фиксацию.

Ответ 5

Исправьте конфликты в файле .gitignore, добавьте обновленную версию и затем выполните:

vim .gitignore
# assuming you want all 4 lines: simply remove the conflict markers (<<<<<<, ======, and >>>>>)
git add .gitignore
git commit

Ответ 7

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

Модификации, сделанные в .gitignore на новой новостройке, объединяются с той, что сделана на master. Строка: <<<<<<< HEAD указывает изменения, внесенные в мастер, которые следуют этой строке, в то время как строка >>>>>>> newfeature указывает изменения, внесенные в newfeature, которые предшествуют этой строке. Две модификации разделяются на =======.

Вы должны вручную отредактировать файл и сохранить/объединить то, что полезно в каждой из двух частей. Затем вы должны зафиксировать (после удаления строк <<<<HEAD, ===== и >>>newfeature).