Git Rebase или Squash? - PullRequest
       10

Git Rebase или Squash?

0 голосов
/ 23 апреля 2019

Я создал ветку функций из разработки, и эта ветвь функций содержит кучу коммитов в течение примерно 20. Прежде чем объединить ветку функций с разработкой, я хочу преобразовать все коммиты в одну. Какой из них лучший способ выполнить эту задачу, git squash или rebase и как это сделать?

1 Ответ

0 голосов
/ 24 апреля 2019

Если вы хотите объединить вашу группу коммитов в один коммит на ветке feature , вы можете сделать это следующим образом, но если эта группа коммитов уже передана на удаленный сервер, вы должны быть уверены, что нет один работает над веткой feature , потому что вам придется принудительно нажимать на эту ветку, и это подразумевает перезапись удаленной истории (то, что вы обычно не хотите делать, работая над публичным репозиторием *) 1006 * или более человек работают в этой отрасли).

  1. git checkout FEATURE (где FEATURE должен быть заменен именем вашей функции ответвление.
  2. git rebase -i HEAD~21 Предполагается, что вы хотите раздавить 20 последних коммитов. Если у вас есть HASH самого старого коммита, вы также можете сделать git rebase -i HASH^
  3. Теперь вам нужно заменить pick на squash (или s) во всех строках, кроме первой, и сохранить файл
  4. Вы должны выбрать сообщение для этой новой фиксации. Git показывает вам сообщения коммитов, которые вы давите
  5. Если исходные коммиты уже были переданы на удаленный сервер, вам придется force push , потому что вы переписываете удаленную историю, заменяя эти 20 коммитов новыми. Это то, что вы обычно не хотите делать, если вы работаете с большим количеством людей в этой ветке. git push -f
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...