Можно ли сделать так, чтобы git svn dcommit приводил к одному svn commit? - PullRequest
42 голосов
/ 01 октября 2008

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

Ответы [ 3 ]

34 голосов
/ 01 октября 2008

Если вы работаете над веткой в ​​git, вы можете git-merge --squash, которая делает это в git. Затем вы можете отправить этот сдавленный коммит в SVN.

Конечно, много маленьких коммитов - это хорошо, так зачем вам их раздавливать?

27 голосов
/ 02 октября 2008

Команда git rebase -i может сделать это и многое другое. Эта команда очень мощная, поэтому с ней хорошо подружиться.

Синтаксис: git rebase -i <commit ID>. Это вызывает ваш текстовый редактор с опциями (и инструкциями) для изменения всех коммитов вплоть до (не включая) данного идентификатора.

Например, чтобы изменить предыдущие 5 коммитов, вы можете сделать это:

git rebase -i HEAD~5

Или, если ваша ветка SVN называется "svn / trunk", то этот синтаксис также хорош:

git rebase -i svn/trunk

Затем появится окно текстового редактора. Чтобы раздавить все, измените первое слово каждой строки после первого с «выбрать» на «раздавливание» (если это звучит странно - это будет иметь больше смысла, когда вы это увидите). Затем сохраните и закройте редактор. После этого у вас будет возможность отредактировать сообщение коммита для сдавленного коммита.

Среди прочего, что вы можете делать с git rebase -i, это переупорядочивание коммитов, сжатие коммитов различными способами и удаление коммитов.

Я использую эту команду постоянно; это убийственная особенность Git.

7 голосов
/ 14 декабря 2008

Райан Томайко написал немного о git rebase -i, что он сказал:

… [это] немного похоже на git commit - amnd запрыгнул на кислоту и держал бензопилу - совершенно безумный и довольно опасный, но способный выставить совершенно новые состояния ума. Здесь вы можете редактировать, сдавливать, изменять порядок, дразнить и комментировать существующие коммиты так, чтобы это было проще и интуитивно понятнее, чем должно быть.

У меня есть склонность часто совершать коммиты в git, но я не обязательно хочу dcommit каждый коммит в svn, и сжатие всей моей работы не имеет смысла. Сейчас я пытаюсь изменить порядок и объединить несколько элементов в более логичные коммиты.

...