В соответствии с руководство, git dcommit
"создаст ревизию в SVN для каждой фиксации в git." Но есть ли способ избежать множественных ревизий Subversion? То есть, чтобы git объединить все изменения до выполнения svn commit
?
Можно ли сделать результат git svn dcommit в одном svn commit?
Ответ 1
Если вы работаете с веткой в git, вы можете git-merge --squash
, что делает это в git. Затем вы можете нажать эту сжатую фиксацию на SVN.
Конечно, много мелких коммитов хороши, так зачем вам их сквоивать?
Ответ 2
Команда git rebase -i
может сделать это и многое другое. Эта команда чрезвычайно мощная, поэтому хорошо подружиться с ней.
Синтаксис: git rebase -i <commit ID>
. Это вызывает ваш текстовый редактор с параметрами (и инструкциями) для изменения всех коммитов до (не включая) заданного идентификатора.
Например, чтобы изменить предыдущие 5 коммитов, вы можете сделать это:
git rebase -i HEAD~5
Или, если ваша ветвь SVN называется "svn/trunk", то этот синтаксис тоже хорош:
git rebase -i svn/trunk
Затем появится окно текстового редактора. Чтобы раздавить все, измените первое слово каждой строки после первого из "pick" на "squash" (если это звучит сбивает с толку - это будет иметь больше смысла, когда вы его увидите). Затем сохраните и закройте редактор. Затем у вас будет возможность редактировать сообщение фиксации для сжатого коммита.
Среди других вещей, которые вы можете сделать с помощью git rebase -i
, являются переупорядочивание коммитов, раздача коммитов по-разному и удаление коммитов.
Я постоянно использую эту команду; это функция убийцы Git.
Ответ 3
Райан Томайко написал немного о git rebase -i
, который он сказал:
... [это] немного похоже на git commit -amend, скопившийся на кислоте и держащий бензопилу - совершенно безумный и довольно опасный, но способный разоблачить совершенно новые состояния ума. Здесь вы можете редактировать, сквош, переупорядочивать, дразнить друг друга и комментировать существующие коммиты таким простым и интуитивным способом, как это должно быть.
У меня есть тенденция часто фиксировать в git, но не обязательно хочу, чтобы dcommit каждую фиксацию svn, и раздавить всю мою работу так же мало. Я пытаюсь теперь переупорядочить и скворовать несколько вместе в более логические блоки фиксации.