Сквош все мои коммиты в один для GitHub тянуть запрос

Я сделал запрос на GitHub. Теперь владелец хранилища говорит о том, чтобы раздавить все коммиты в один.

Когда я печатаю git rebase -i Откроется блокнот со следующим содержимым:

noop

# Rebase 0b13622..0b13622 onto 0b13622
#
# Commands:
#  p, pick = use commit
#  r, reword = use commit, but edit the commit message
#  e, edit = use commit, but stop for amending
#  s, squash = use commit, but meld into previous commit
#  f, fixup = like "squash", but discard this commit's log message
#  x, exec = run command (the rest of the line) using shell
#
# These lines can be re-ordered; they are executed from top to bottom.
#
# If you remove a line here THAT COMMIT WILL BE LOST.
#
# However, if you remove everything, the rebase will be aborted.
#
# Note that empty commits are commented out

Я искал в Google, но я не понимаю, как это сделать.

4 ответа

Решение

Просто простое дополнение, чтобы помочь кому-то еще, ищущему это решение. Вы можете передать количество предыдущих коммитов, которые вы хотели бы раздавить. например,

git rebase -i HEAD~3 

Это вызовет последние 3 коммитов в редакторе.

Хорошо, я понял это... Сначала я должен был написать git rebase -i xxxxxxxxxxxxxxxx где ххххххххх - это SHA коммита, до которого я должен раздавить. Затем в Блокноте я отредактировал первый как кирку, а остальное - как сквош. Затем откроется новое окно блокнота, и в первой строке я набрал имя моего нового коммита. И тогда мне пришлось сделать силовой толчок:

git push --force origin master

По состоянию на 1 апреля 2016 года менеджер репозитория теперь может объединять все коммиты в запросе на выборку в один коммит, выбирая "Сквош и объединение" в запросе на выгрузку.

Сквош и вариант слияния

Конечно, если вы все еще хотите вручную сдавить коммиты перед слиянием, ответ fontno - лучшее решение.

Пытаться git rebase -iи используйте 'squash' для всех коммитов, которые вы хотите раздавить.

Редактировать:

git rebase -i покажет вам интерактивный редактор со списком коммитов, которые вы перебираете. Команда по умолчанию перед каждым коммитом - "выбрать", поэтому вам просто нужно s/pick/squash/ для всех коммитов, которые вы хотите раздавить, и тогда все они будут сдавлены в свой последний предыдущий коммит.

Убедитесь, что вы перебазируете правильную ветку.

Другие вопросы по тегам