Могу ли я перебазировать и сдавать коммиты одновременно? - PullRequest
9 голосов
/ 15 июля 2010

Когда у меня есть исправление для изменения, которое было несколькими коммитами ранее, я всегда запускаю rebase два раза подряд.Можно ли сделать этот рабочий процесс все за один шаг?Допустим, у меня есть 4 новых коммита.

* (master) D
* C
* B
* A
* Base

Я нахожу ошибку в B, поэтому я создаю ветку и исправляю ее.

* (master) D
* C
| * (fix) Fix.
|/  
* B
* A
* Base

Далее я запускаю git rebase --onto fix B D для перемещения Cи D на B.

* (master) D'
* C'
* (fix) Fix.
* B
* A
* Base

Наконец я запускаю git rebase --i fix^^, чтобы увидеть последние несколько коммитов, и я раздавливаю B и Fix в один коммит.

* (master) D'
* C'
* B'
* A
* Base

Есть ли быстрееспособ выполнить тот же рабочий процесс?Я полагаю, что объединение будет проще, но объединение для меня не подходит, потому что я использую git svn, который требует линейной истории.

Ответы [ 2 ]

5 голосов
/ 30 декабря 2010

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

3 голосов
/ 15 июля 2010

Вам известна опция --squash для git merge?

--squash

Создание рабочего дерева и состояния индекса, как если бы произошло реальное слияние (кромедля информации о слиянии), но на самом деле не делать коммит или перемещать HEAD и не записывать $GIT_DIR/MERGE_HEAD, чтобы следующая команда git commit создала коммит слияния.Это позволяет вам создать один коммит поверх текущей ветви, эффект которого аналогичен слиянию другой ветви (или более в случае осьминога).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...