Альтернативное решение - зафиксировать изменения, а затем избавиться от этих коммитов. Поначалу это не дает немедленной выгоды, но открывает возможность коммитить порциями и создавать тег git для резервного копирования.
Вы можете сделать это в текущей ветке, например так:
git add (-A) .
git commit -m"DISCARD: Temporary local changes"
git tag archive/local-changes-2015-08-01 # optional
git revert HEAD
git reset HEAD^^
Или вы можете сделать это на отдельной голове. (при условии, что вы начинаете с ветки BRANCHNAME):
git checkout --detach HEAD
git add (-A) .
git commit -m"DISCARD: Temporary local changes"
git tag archive/local-changes-2015-08-01 # optional
git checkout BRANCHNAME
Однако обычно я делаю коммиты, а затем называю некоторые или все коммиты как «DISCARD: ...». Затем используйте интерактивную перебазировку, чтобы удалить плохие коммиты и сохранить хорошие.
git add -p # Add changes in chunks.
git commit -m"DISCARD: Some temporary changes for debugging"
git add -p # Add more stuff.
git commit -m"Docblock improvements"
git tag archive/local-changes-2015-08-01
git rebase -i (commit id) # rebase on the commit id before the changes.
# Remove the commits that say "DISCARD".
Это более многословно, но позволяет точно определить, какие изменения вы хотите отменить.
git lol
иgit lola
ярлыки были очень полезны с этим рабочим процессом.
git help reset
иgit help clean