Как я могу объединить 2 'git commit's - PullRequest
5 голосов
/ 29 марта 2011

Я сделал 2 'git commit' локально.Но я не нажал, могу ли я отредактировать свой git и объединить эти 2 git commit в 1?

Ответы [ 3 ]

11 голосов
/ 29 марта 2011

Да, это возможно:

Вы должны сначала найти коммит, который находится перед тем, с которым вы хотите работать. Представьте, что мы хотим объединить два последних коммита:

git rebase -i HEAD~3

При этом будет запущен редактор для интерактивного перебазирования, который дает вам возможность выполнять так называемое сжатие коммитов, и в нем будут перечислены коммиты, начиная с того, который был три коммита назад.

ПОЖАЛУЙСТА, прочитайте сообщение справки в открывшемся окне редактора, чтобы понять, как использовать интерактивный ребаз. Для того, чтобы отменить операцию восстановления, вы должны удалить все строки из файла и сохранить его! Вы также не касаетесь идентификатора и описания фиксации - вы просто меняете команду перед идентификатором фиксации с «pick» на «s» (squash)

Другое дело, что вы абсолютно правильно упомянули, что еще не давили. Первое и единственное правило git - «Не переписывать опубликованную историю». То есть Вы не перемещаете, не переупорядочиваете или удаляете коммиты, которые уже были выдвинуты для публичного доступа. Это верно для любой ситуации, кроме случаев, когда вы работаете над проектом только вы.

4 голосов
/ 29 марта 2011

Если вы сделали коммит и хотите добавить в него некоторые изменения, вы можете использовать git commit --amend, который изменит ваш последний коммит. Если вы хотите сделать это, не проходя через все проблемы git rebase, то:

git checkout --soft HEAD~

Это удалит последний коммит, не удаляя изменения, а затем

git commit --amend -C HEAD

, который изменит последний коммит с новыми изменениями в индексе. Флаги -C HEAD берут сообщение о коммите из основного коммита, поэтому вам даже не нужно добавлять сообщение снова.

1 голос
/ 29 марта 2011

Здесь есть еще одна замечательная статья о сквоше: http://gitready.com/advanced/2009/02/10/squashing-commits-with-rebase.html

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