удалить историю коммитов без возврата - PullRequest
0 голосов
/ 28 ноября 2018

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

Ответы [ 2 ]

0 голосов
/ 28 ноября 2018

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

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

git reset --soft HEAD~6

Эта команда отменит 6 локальных коммитов и покажет в вашем git status все изменения в файлахсреди этих 6 коммитов.

Теперь просто выполните свой единственный коммит:

git commit -am "Very nice and not funny commit message"

После этого вы не можете просто сделать git push, потому что ваша локальная ветвь теперь сильно отличается отудаленная ветвь (с 6 старыми коммитами).

Итак, вам нужно принудительно нажать push для переопределения фактической ветки в удаленной ветке:

git push -f
0 голосов
/ 28 ноября 2018

Есть несколько способов объединить все в один коммит.Это зависит от того, что вы хотите в результате.Если вы хотите, чтобы новый коммит находился в ветке master, вы можете извлечь master, объединить тему в master с помощью --squash, и он должен создать новый отдельный коммит, который можно отправить на сервер.Или вы можете выполнить интерактивную перебазировку и раздавить все в текущей ветке темы и принудительно нажать.

Вот примеры: https://robots.thoughtbot.com/git-interactive-rebase-squash-amend-rewriting-history

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