Сквош все мои коммиты в один для 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/ для всех коммитов, которые вы хотите раздавить, и тогда все они будут сдавлены в свой последний предыдущий коммит.
Убедитесь, что вы перебазируете правильную ветку.