Объединить конфликт в .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
Ответ 6
Вы должны объединить свой .gitignore вручную, а затем добавить его в индекс
$ git add .gitignore
Вы можете получить основы слияния здесь:
http://git-scm.com/book/en/Git-Branching-Basic-Branching-and-Merging
Ответ 7
Git сбой автоматического слияния. Обычно это происходит, когда изменения происходят в одном и том же файле одновременно в разных ветких/репозиториях при попытке объединить содержимое ветвей /push.
Модификации, сделанные в .gitignore на новой новостройке, объединяются с той, что сделана на master.
Строка: <<<<<<< HEAD
указывает изменения, внесенные в мастер, которые следуют этой строке, в то время как строка >>>>>>> newfeature
указывает изменения, внесенные в newfeature, которые предшествуют этой строке. Две модификации разделяются на =======
.
Вы должны вручную отредактировать файл и сохранить/объединить то, что полезно в каждой из двух частей. Затем вы должны зафиксировать (после удаления строк <<<<HEAD
, =====
и >>>newfeature
).