почему вы создаете ветку для ваших 2 коммитов, а затем объединяетесь?Я думаю, это может создать проблемы, так как слияния в git работают иначе, чем в svn.
это должно работать ("следует", но я уверен, что это так):
# on master, no need to create a branch
$ git add -p file
$ git commit -m "first set of changes"
$ git add file
$ git commit -m "the remaining changes"
# apply your commit on top of eventually new changes upstream
$ git svn rebase
# commit your 2 commits to svn
$ git svn dcommit
в ветвях svn - это просто копии каталога (чаще всего это магистральный каталог), и коммиты слияния не отличаются от обычных коммитов (за исключением нового свойства svn:mergeinfo
, начинающегося с svn 1.6)
коммиты в git разные, каждый коммит хранит ссылку на свой родительский коммит.SVN не нуждается в этом, поскольку он может просто использовать REV-1.Коммиты слияния в git, таким образом, имеют несколько родителей (ветвь слияния и ветвь слияния)
Я не знаю, что произойдет, если вы передадите git в svn, но он, вероятно, будет только фиксировать коммит слияния сам, без истории(сообщение выглядит как «объединенная ветвь« bla »в« master »).
когда вы запускаете svn commit
только ваши новые изменения отправляются на сервер для экономии пропускной способности. теперь слияния в git работают по-другому иразница с предыдущими версиями, вероятно, не будет такой, как вы ожидаете, поэтому git svn dcommit
терпит неудачу.
в документации git svn говорится даже так: не объединяйте ветки с помощью git и не делайте их в svnэто, скорее всего, испортит вашу историю
Запуск git merge или git pull НЕ рекомендуется в ветке, из которой вы планируете dcommit. Subversion не представляет слияния каким-либо разумным или полезным способом, поэтому пользователииспользуя Subversion, вы не увидите никаких сделанных вами слияний. Более того, если вы слили или извлекли из ветки git, которая являетсязеркало ветки SVN, dcommit может зафиксировать неправильную ветку. git svn docs