Когда нужно переключиться на другую задачу, в текущей ветке я просто делаю
git commit -am 1, затем возвращаюсь, делаю
git reset head^ и продолжаю работу.
Суть вопроса вот в чем - например, в коммите есть переименованный файл, но
git reset head^ удаляет старый файл и добавляет новый.
пример$ git mv 1.txt 2.txt
$ git status
renamed: 1.txt -> 2.txt
$ git commit -am test
1 file changed, 0 insertions(+), 0 deletions(-)
rename 1.txt => 2.txt (100%)
$ git reset head^
$ git status
Changes not staged for commit:
(use "git add/rm <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
deleted: 1.txt
Untracked files:
(use "git add <file>..." to include in what will be committed)
2.txt
Судя по всему, это by design, есть ли способ вернуть результат
git mv после резета?
Раньше пользовался
git stash / git stash pop --index, но часто возникала путаница в застэшенных изменениях, решил отказаться в пользу git commit.