Подтвердить что ты не робот

Git squash все фиксируются в ветке без конфликтов

Обычный рабочий процесс разработки для нас - это checkout branch b, передать ему кучу, затем сквоить все эти коммиты в один (все еще на b).

Однако во время процесса rebase -i для сквоша всех коммитов часто возникают конфликты с несколькими шагами.

Я по существу хочу изменить ветвь на один коммит, который представляет состояние репозитория во время окончательной фиксации на b

Я сделал несколько поисков, но я не нашел точно, что я ищу. Я не хочу merge --squash, потому что мы хотели бы протестировать срезанную ветвь функции до слияния.

4b9b3361

Ответ 1

Если вам не нужна информация о фиксации, вы можете просто сделать мягкий reset. Затем файлы остаются такими, какими они были, и когда вы совершаете фиксацию, эта фиксация будет поверх коммита, который вы выполнили reset.

Чтобы найти фиксацию в reset, чтобы:

git merge-base HEAD BRANCH_YOU_BRANCHED_FROM

Тогда

git reset --soft COMMIT_HASH

Затем создайте коммит, возможно:

git commit -am 'This is the new re-created one commit'

Ответ 2

Это похоже на ответ от Расмуса, но разбитый на три шага, которые должны всегда срабатывать:

$ git merge feature1
$ git reset --soft [email protected]{1}
$ git commit -c feature1

Пояснение:

  • Объединить и разрешить конфликты
  • сохранить изменения, но reset для старой главы
  • фиксировать все изменения с помощью сообщения фиксации и автора из последней ветки функции