Підходив до такого підходу (і це, мабуть, точно так само, як використання інтерактивної бази даних), але для мене це щось просто.
Примітка. Я представляю такий підхід заради ілюстрації того, що ви можете зробити, а не щоденної альтернативи. Оскільки він має багато кроків (і, можливо, деякі застереження.)
Скажіть, що ви хочете змінити фіксацію, 0
і ви зараз увімкненоfeature-branch
some-commit---0---1---2---(feature-branch)HEAD
Отримайте замовлення на цю комісію та створіть quick-branch
. Ви також можете клонувати свою гілку функції як точку відновлення (перед запуском).
?(git checkout -b feature-branch-backup)
git checkout 0
git checkout -b quick-branch
Тепер у вас буде щось подібне:
0(quick-branch)HEAD---1---2---(feature-branch)
Зміни сцени, приховуйте все інше.
git add ./example.txt
git stash
Внесіть зміни та поверніться до feature-branch
git commit --amend
git checkout feature-branch
Тепер у вас буде щось подібне:
some-commit---0---1---2---(feature-branch)HEAD
\
---0'(quick-branch)
Rebase feature-branch
на quick-branch
(дозволити будь-які конфлікти шляхом). Нанесіть приховування та видаліть quick-branch
.
git rebase quick-branch
git stash pop
git branch -D quick-branch
І закінчуєте ви:
some-commit---0'---1'---2'---HEAD(feature-branch)
Git не буде дублюватись (хоча я не можу реально сказати в якій мірі) 0 виконувати при перезапуску.
Примітка: всі хеші фіксації змінюються, починаючи з фіксації, яку ми спочатку мали намір змінити.