в git-svn, как мне изменить ветку svn, которую отслеживает ветка git? - PullRequest
1 голос
/ 02 марта 2012

Мой обычный рабочий процесс git-svn - это выполнять мою работу в локальной ветке, затем объединяться с master и git svn dcommit оттуда, чтобы записывать мои коммиты в ствол svn.

Тем не менее, в моем текущем локальном филиале (foo) я понимаю, что эта работа будет продолжаться некоторое время, прежде чем я буду чувствовать себя комфортно, отправляя ее в ствол, и другие разработчики могут быть вовлечены до этого , Я хотел бы "поддержать" ветку svn, чтобы моя работа была на сервере.

Я создал новую ветвь svn (svnFoo) из текущего транка, и я в основном хочу "переместить" foo, чтобы когда я svn dcommit из него, все его коммиты записывались на svnFoo вместо trunk.

Каков наилучший способ сделать это?

1 Ответ

1 голос
/ 04 марта 2012

git rebase ваш друг здесь.Предполагая, что вы создали локальную ветвь foo из локальной ветки master и недавно сделали git svn fetch, чтобы ваш локальный репозиторий Git знал об удаленной ветке svnFoo, вам нужна волшебная команда:

git rebase --onto remotes/svnFoo $(git merge-base master foo) foo

Это найдет коммит, на котором вы разветвлялись foo из master, и воспроизведет все коммиты оттуда до заголовка ветви foo в верхней части ветви svnFoo.Последующие git svn dcommit s будут фиксироваться на ветви Subversion svnFoo, а не на стволе.

...