2012-03-13 2 views
8

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

Поэтому я следовать инструкциям и сделать мерзавец Svn перебазироваться, а затем мерзавец СВН dcommit

Это работало в самый первый раз, но с тех пор перебазирования всегда конфликтует практически на каждой фиксации. Похоже, он не понимает, какие коммиты мои, и жалуется, что все противоречиво. Каждый раз, когда мне приходится отказываться от 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". 

ответ

7

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

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

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

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

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

+1

Ха-ха. Любите свою линию открытия. Я сделаю это благодарю! –

+1

Я предполагаю, что git-svn ref ID означает название ветки «remotes/git-svn»? –

+1

Er ... git co не команда. git checkout Я предполагаю? (Просто убедитесь, что я не использую git svn в этот момент) –

Смежные вопросы