преимущества - Можно ли сделать git svn dcommit result в одном svn commit?
преимущества svn (2)
Согласно руководству git dcommit
«создаст ревизию в SVN для каждой фиксации в git». Но есть ли способ избежать множественных ревизий Subversion? То есть, чтобы git сменил все изменения до выполнения svn commit
?
Если вы работаете в ветке в git, вы можете git-merge --squash
, что делает это в git. Затем вы можете нажать на эту сжатую фиксацию на SVN.
Конечно, много мелких коммитов хороши, так зачем вам их сквоивать?
Команда 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.