преимущества - Можно ли сделать 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.





git-svn