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

759   3  

3 ответов:

Если вы используете git rm git удалит все версии этого пути из индекса, поэтому ваше действие разрешения оставит вас без какой-либо версии.

можно использовать git checkout --ours src/MyFile.cs выбрать версию из ветки, на которую вы перебазирования или git checkout --theirs src/MyFile.cs выбрать версию из ветки которого перебазирования.

Если вы хотите смешать вам нужно использовать инструмент слияния или редактировать его вручную.

Я иногда нахожу это запутанным, используя --theirs и --ours параметры для определения того, откуда будет получен файл. Большую часть времени мой будет в ветке, которую я перебазирую, на которую ссылается --theirs!

вы также можете использовать git checkout <tree-ish> -- src/MyFile.cs

здесь <tree-ish> может быть заменен именем ветви или commit-id, который содержит файл, который вы хотите сохранить.

git checkout 6a363d8 -- src/MyFile.cs

git checkout my_branch -- src/MyFile.cs

git checkout HEAD -- src/MyFile.cs

когда делать ...

git checkout --ours someFile

может показаться, что он ничего не делал при выполнении статуса git.

просто не забудьте сделать это позже.

git add someFile
git status

Comments

    Ничего не найдено.