Подтвердить что ты не робот

Устранение конфликта с добавлением "добавлено" в 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 знает, какую версию файла я хочу удалить и которую я хочу сохранить?

4b9b3361

Ответ 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