Восстановление истории фиксации в МЕРЗАВЦЕ без переосновы

Начиная с выяснения у моего последнего вопроса, который оказался о перебазировании с МЕРЗАВЦЕМ, я решил, что не хочу повторно базироваться вообще. Вместо этого я хочу:

  1. Ответвление
  2. Работа работы работы, регистрируясь и продвигая в любом случае
  3. Выведите все те фиксации и притворитесь, что их никогда не происходило (так одна чистая фиксация в конце работы)

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

Это просто плохо и почему? Более важный: существует ли ЛУЧШИЙ путь / МЕРЗАВЕЦ способ сделать это? git rebase -i вынуждает меня объединиться (и выбор и сквош).

21
задан Community 23 May 2017 в 12:09
поделиться

2 ответа

Вы также можете использовать git merge с параметром - squash .

10
ответ дан 29 November 2019 в 20:59
поделиться

Проще всего выполнить мягкий сброс.

Итак, проверьте свою тематическую ветку:

git checkout -b topic master

работа, работа, работа.

git commit
git commit
git commit
git commit

Довольный этим, вы можете сделать новый одиночный коммит поверх мастера.

git reset --soft master
git commit

Теперь выполните слияние с мастером (это будет перемотка вперед) и приведите в порядок ветку темы. (Обратите внимание, что вам не нужно этого делать, если вы готовы запомнить или пометить, где был мастер, и просто работать с мастером без ветвления, вы могли бы только что выполнить git reset --soft old-master и git commit , и вам не понадобятся эти последние шаги по очистке.)

git checkout master
git merge topic
git branch -d topic
25
ответ дан 29 November 2019 в 20:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: