git-svn rebase и dcommit проблема - PullRequest
       6

git-svn rebase и dcommit проблема

8 голосов
/ 14 декабря 2010
git version 1.7.1
svn, version 1.6.12
Ubuntu 10.10

У меня только что Git и я использовал SVN. Но я не использовал тогда вместе. У меня был git-репозиторий, и мне нужно было больше моего репозитория к Subversion. Так что я использую git-svn. Который работает нормально, большую часть времени. Тем не менее, я нахожу круги по кругу.

Я единственный, кто работает над этим проектом.

Я делаю некоторые изменения в моей ветке. Затем я ставлю их:

git stage gateway.c

Затем передайте их локально в git:

git commit m"Made some changes"

Тогда я хочу передать их в подрывную деятельность. Получить последние обновления:

git svn rebase

Тогда я получаю следующее сообщение:

It seems that I cannot create a rebase-apply directory, and
I wonder if you are in the middle of patch application or another
rebase.  If that is not the case, please
        rm -fr /home/joe/projects/gateway/.git/rebase-apply
and run me again.  I am stopping in case you still have something
valuable there.
rebase refs/remotes/trunk: command returned error: 1

I then doing the following:
rm -fr /home/joe/projects/gateway/.git/rebase-apply

Затем я снова делаю ребаз:

git svn rebase

Сообщение таково:

First, rewinding head to replay your work on top of it...
Applying: Issue with getting the port from the user context.
Using index info to reconstruct a base tree...
Falling back to patching base and 3-way merge...
Auto-merging driver.c
Auto-merging gateway.c
CONFLICT (content): Merge conflict in gateway.c
Failed to merge in the changes.
Patch failed at 0001 Issue with getting the port from the user context.

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

rebase refs/remotes/trunk: command returned error: 1

Что ставит меня в ветку под названием, и что это за ветка и для чего она нужна:

*(no branch)

Затем я разрешаю конфликты с этой ветвью. Затем я проверяю свою ветку play_video. Я пытаюсь сделать другое:

svn git dcommit

И я снова обхожу круги.

Прежде чем я начну выдергивать свои волосы, кто-нибудь может дать мне какой-нибудь совет,

Большое спасибо за любые предложения,

Ответы [ 4 ]

3 голосов
/ 14 декабря 2010

Нет полного ответа, но то, что кажется определенным, это то, что:

*(no branch)

означает, что вы попадаете в режим DETACHED HEAD, который вы видите в контексте git svn в " Могу ли я восстановитьПотерянные коммиты в SVN-репозитории с использованием локальной ветки git-svn для отслеживания?".
См. также" Почему git отделил мою голову?".

Так что убедитесь, что:

  • на каждом шаге вы не находитесь в отдельном ГОЛОВЕ (без ветки)
  • , что вы dcommit ветвь, которая существует в вашем репозитории SVN (а не чистый локальный Gitфилиал)
1 голос
/ 16 мая 2018

Я сталкиваюсь с подобной проблемой, вероятно, потому что я нажал на свой git remote перед тем, как нажать на SVN remote, и, таким образом, испортил мою историю git. Кажется, что каждый раз, когда я пытаюсь зафиксировать что-то в svn, git пытается воспроизвести ВСЕ мои предыдущие коммиты, даже если они уже существуют в svn, поэтому я просто делаю git rebase --skip, пока не вернусь к последней фиксации, но самое простое решение - возможно, просто клонировать свежий git svn.

1 голос
/ 09 сентября 2011

После разрешения конфликтов вам нужно запустить git rebase --continue перед запуском git svn dcommit

1 голос
/ 16 декабря 2010

Использовали ли вы инструкции Google здесь для импорта вашего git-репо в svn? У меня была похожая ошибка после использования этих инструкций: первоначальный импорт прошел нормально, но что-то пошло не так, и я не смог нажать последующие коммиты.

Я решил это, просто git svn init, используя свежее git-репо для отслеживания моего SVN-репо.

...