Устранение конфликта с добавлением "добавлено" в git?
Я перезаряжаюсь в git, и один конфликт, который я получаю, "добавлен" - то есть точно такое же имя файла было добавлено независимо в моей ветке, а в ветке я перезаряжаюсь. git status
говорит мне:
# Unmerged paths:
# (use "git reset HEAD <file>..." to unstage)
# (use "git add/rm <file>..." as appropriate to mark resolution)
#
# both added: src/MyFile.cs
Мой вопрос: как мне это решить? Должен ли я использовать инструмент слияния или есть способ, которым я могу это сделать только из командной строки? Если я git rm src/MyFile.cs
, как git знает, какую версию файла я хочу удалить и которую я хочу сохранить?
Ответы
Ответ 1
Если вы используете git rm
git, вы удалите все версии этого пути из индекса, чтобы ваше действие разрешения оставило вас без какой-либо версии.
Вы можете использовать git checkout --ours src/MyFile.cs
, чтобы выбрать версию из ветки, на которую вы перегружаете, или git checkout --theirs src/MyFile.cs
, чтобы выбрать версию из ветки, которую вы перегружаете.
Если вам нужна комбинация, вам нужно использовать инструмент слияния или отредактировать его вручную.
Ответ 2
Я иногда сбиваю с толку с помощью опций --theirs
и --ours
, чтобы определить, откуда будет поступать файл. Большую часть времени моя будет в ветке, которую я перезаряжаю, на которую ссылается --theirs
!
Вы также можете использовать git checkout <tree-ish> -- src/MyFile.cs
Если <tree-ish>
можно заменить либо именем ветки, либо идентификатором фиксации, который содержит файл, который вы хотите сохранить.
git checkout 6a363d8 -- src/MyFile.cs
git checkout my_branch -- src/MyFile.cs
git checkout HEAD -- src/MyFile.cs
Ответ 3
При выполнении...
git checkout --ours someFile
Может показаться, что ничего не делалось при выполнении состояния git.
Просто запомните это позже.
git add someFile
git status