У меня есть Git-репозиторий, который отслеживает SVN-репозиторий. Я клонировал это используя --stdlayout
.
Я создал новый локальный филиал через git checkout -b foobar
Теперь я хочу, чтобы эта ветка …/branches/foobar
попала в репозиторий SVN.
Как мне это сделать?
(Вырезал много следственного текста. См. историю вопроса, если вам это интересно)
Ответы:
Я знаю, что на этот вопрос был дан ответ некоторое время назад, но после прочтения я могу помочь добавить примеры конкретной команды git svn branch и связать ее с типичным рабочим процессом.
Вроде кч ответил, пользуйся
git svn branch
. Вот полный пример (обратите внимание на-n
пробный запуск):Если все идет хорошо, сервер отвечает следующим образом:
А без
-n
коммутатора сервер, вероятно, добавляет что-то вроде:Лучшая часть этого, теперь вы можете создать локальную ветку на основе вашей удаленной ветки следующим образом:
Что означает «проверить и создать локальную ветвь с именем
auth_bug
и заставить ее следовать за удаленной веткой (последний параметр)auth_bug
Проверьте, что ваша локальная ветвь работает в этой удаленной ветке, используя
dcommit
with--dry-run
(-n
):И сервер SVN должен ответить с новым именем ветви:
источник
git co
сgit checkout
таким , что пример может работать для когоgit-svn branch
команде есть сложная часть - вы должны быть онлайн, чтобы создать новую ветку таким образом. Вы можете сделать следующее в автономном режиме: 1.git checkout -b foobar
2. hack-hack-hack 3git commit -m "Done foobar"
.. И когда он-лайн подтолкнуть это изменение, сделав 1.git svn branch foobar
2.git branch --set-upstream foobar remotes/foobar
3git svn dcommit
..git checkout -b foobar-new remotes/foobar
. 3.git checkout foobar
4.git rebase foobar-new
5. Чтобы проверить, что ветка теперь фиксируется в ветке svn.git svn dcommit --dry-run
6. Наконец-то на самом деле зафиксироватьgit svn dcommit
7. Удалить временную веткуgit branch -D foobar-new
по состоянию на git v1.6.1,
git svn branch
доступно.Из Git Docs:
Предыдущие версии git не предоставляют способ создания ветки svn.
источник
@kch Я только что (7 декабря 2008 г.) скомпилировал тег git v1.6.1-rc1, и он содержит команду git svn branch и документацию для нее. Таким образом, выпуск git v1.6.1 должен (надеюсь) содержать эту команду.
источник