так что ваша ветка темы по-прежнему указывает на старые коммиты
я проблема с git-svn dcommits, из-за которой репозиторий git теряет информацию о том, какие коммиты какие.
Я стараюсь убедиться, что основная ветка в git всегда следует за стволом в репозитории SVN. Поэтому всякий раз, когда я работаю, я работаю над темой. Вот мой сценарий:
Некоторое время работаю в ветке тем
git checkout -b my-topic
git commit -m "blah blah blah"
Тогда я решаю, что хочу объединить свою ветку с мастером
git checkout master
git svn rebase #get any changes in svn
git rebase master my-topic
git merge my-topic --ff-only
До этого момента все прошло хорошо. Теперь у меня есть и master, и my-topic для ускорения и указания на один и тот же коммит, и вся история выглядит так:
A -- B -- C - master + my-topic
Тем не менее, когда я делаю
git svn dcommit
Я получаю дерево, которое выглядит следующим образом (B и C - коммиты, которые я изначально сделал для этой темы):
-- B -- C - my-topic
/
A -- B -- C - master + remotes/trunk
Похоже, что во время процесса dcommit git передает коммиты до SVN, а затем воспроизводит их обратно поверх master. Проблема, я думаю, в том, что они получают различную информацию о коммиттере. Я вхожу в SVN с черепаха Plink и ключ SSH.
Коммиты в репозитории git, которые не были отправлены в SVN, имеют информацию о коммиттере как:
Collin Hockey <[email protected]>
Коммиты, которые были отправлены в хранилище svn, имеют следующее:
chockey <chockey@6206317d-b652-48a9-a948-4036602fc523>
Можно ли как-то удержать эти ветви от расщепления? Я могу отчасти исправить это, сказав
git rebase master my-topic
еще раз, но я чувствую, что это не нужно. Основная проблема в том, что как только изменения ветки передаются в SVN, git больше не думает, что ветка где-то была объединена. Это сбивает с толку, чтобы удалить старые ветви, которые вам больше не нужны.