Подтвердить что ты не робот

Можно ли сделать результат git svn dcommit в одном svn commit?

В соответствии с руководство, git dcommit "создаст ревизию в SVN для каждой фиксации в git." Но есть ли способ избежать множественных ревизий Subversion? То есть, чтобы git объединить все изменения до выполнения svn commit?

4b9b3361

Ответ 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, и раздавить всю мою работу так же мало. Я пытаюсь теперь переупорядочить и скворовать несколько вместе в более логические блоки фиксации.