git rebase - вызывает конфликт - почему? - PullRequest
1 голос
/ 08 февраля 2011

Я пытаюсь

git rebase --onto master myremote/master~21 myremote/master

для добавления последних 21 коммитов из удаленного репозитория на моем компьютере.

Что мерзавец говорит мне, что есть конфликт - но как это возможно?

В моем понимании, это всего лишь 21 коммит и применение их поверх моего мастера. Как могут быть конфликты?

Спасибо за помощь!

Я делаю это, кстати, потому что каким-то образом я испортил свой репозиторий git-svn (удаленный), и есть 21 коммит, который мне не удается зафиксировать в subversion. Поэтому я пытаюсь использовать свежий клон git-svn, в который я добавляю эти 21 коммит.

1 Ответ

0 голосов
/ 08 февраля 2011

Конфликт возникает, если:

  • мастер имеет коммит, которого нет в myremote/master.
  • эти коммиты включают общие файлы / изменения с одним последним 21 myremote/master коммитом.

Если у свежего git-svn clone SHA1 отличается от предыдущего репозитория git-svn, то близких общих предков нет, и вероятность конфликтов намного выше.
См.« Как определить конфликтующие коммиты по хешу во время git rebase? » для иллюстраций конфликтов во время перебазирования.


Один из способов сброса локального мастера на myremote / master - это:

git checkout -b tmp myremote/master  # local tmp branch from myremote/master HEAD.
git merge -s ours master             # ignore completely master content
git checkout master
git merge tmp                        # fast-forward to tmp HEAD

Если вы не внесли никаких изменений в свой локальный master до получения myremote/master, это должно сработать.

...