git svn rebase всегда конфликтует с моими коммитами - PullRequest
8 голосов
/ 14 марта 2012

Я использую git svn для работы с клиентом, у которого есть svn-репозиторий (наш материал находится в github).

Поэтому я следую инструкциям и делаю git svn rebase, а затем git svn dcommit

Это сработало в первый раз, но с тех пор перебазирование всегда конфликтует почти при каждом коммите.Кажется, что он не понимает, какие коммиты мои, и жалуется, что вещи противоречат друг другу.Каждый раз, когда мне нужно сделать git rebase - пропускай мой путь до тех пор, пока он не пройдет их и успешно не применяет мои последние коммиты.Никогда не выясняется, где я был в последний раз, когда я делал ребазинг (что, как я полагаю, должно произойти).

Прежде всего ... почему?Тогда я могу как-то обойти это?

First, rewinding head to replay your work on top of it...
Applying: Deleting their old build management stuff as its pretty crappy. Will re-build at some point.
Using index info to reconstruct a base tree...
Falling back to patching base and 3-way merge...
No changes -- Patch already applied.
Applying: Added some error checking around Android specific calls
Using index info to reconstruct a base tree...
<stdin>:16: space before tab in indent.
            Android.hideKeyboard();
<stdin>:31: space before tab in indent.
                    Android.launchNewAccount();
warning: 2 lines add whitespace errors.
Falling back to patching base and 3-way merge...
CONFLICT (modify/delete): src/LoginForm.js deleted in HEAD and modified in Added some error checking around Android specific calls. Version Added some error checking around Android specific calls of src/LoginForm.js left in tree.
Auto-merging src/ChildPanel.js
CONFLICT (content): Merge conflict in src/ChildPanel.js
Failed to merge in the changes.
Patch failed at 0002 Added some error checking around Android specific calls

When you have resolved this problem run "git rebase --continue".
If you would prefer to skip this patch, instead run "git rebase --skip".
To check out the original branch and stop rebasing run "git rebase --abort".

1 Ответ

7 голосов
/ 14 марта 2012

Я не знаю, как вы попали в эту ситуацию, но я могу рассказать вам, как вывести себя из себя.

Сначала создайте новую ветку на основе восходящей SVN: git checkout -b mynewbranch refs/remotes/oldbranch (используйтеgit-svn ref ID здесь).

Затем проверьте его: git checkout mynewbranch.

Наконец, черри выберите коммиты из вашей новой ветки , которые не были переданыSVN (что-то вроде git cherry-pick refs/remotes/oldbranch..oldbranch.

Наиболее вероятная причина проблем, с которыми вы сталкиваетесь, заключается в том, что вы переписали историю после изменения SVN; когда вы используете git-svn для фиксации, он помещает git-svn-id в журнал фиксации , который изменяет хэш ревизии. Если вы затем перемещаете фиксацию, вы начинаете работать в альтернативном юниверсе, где версии SVN конфликтуют с локальной не-SVNиз них.

...