Разрешение конфликта слияния "оба добавлены" в 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 знает, какую версию файла я хочу удалить и которую я хочу сохранить?
3 ответов:
Если вы используете
git rmgit удалит все версии этого пути из индекса, поэтому ваше действие разрешения оставит вас без какой-либо версии.можно использовать
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