До Git 2.23, №
В Git 2.23 или более поздних версиях git restore
может выполнять работу:
git restore -s HEAD
Обратите внимание, что git stash -k
не сделать трюк: он оставляет рабочее дерево, соответствующее index , а не HEAD
commit. 1
Во всех Git версиях начиная с 2.5, он может проще и / или лучше использовать git worktree add
для создания второго рабочего дерева на основе текущего коммита:
git worktree add --detach <path> HEAD
где <path>
- это то место, где вы хотите, чтобы новое рабочее дерево отображалось вверх. Преимущество в том, что вы не касаетесь существующего рабочего дерева. (В Git версиях до 2.15 я советую сделать то, что вы делаете в этом добавленном рабочем дереве, в течение двух недель, а затем удалить его, поскольку в этих версиях Git есть небольшая неприятная ошибка, связанная с добавленными рабочими деревьями. Если вы просто делаете это для файлов рабочего дерева , ошибка сама по себе безвредна.)
В версиях Git до 2.23 вы можете сделать:
git stash
# do whatever your job is here, followed by `git reset --hard` if needed
git stash apply --index
git stash drop
(или git stash pop --index
; я просто хотел бы оставить заявку и отказаться от нее сам).
1 git stash -k
делает две позиции sh фиксируется обычным способом, поэтому они такие же, как всегда. Но затем вместо git reset --hard
, что делает обычный не -k
git stash
, он принудительно корректирует рабочее дерево в соответствии с коммитом sta sh.
Точка git stash -k
это позволяет вам запустить какой-то тест, который использует содержимое work-tree , без необходимости извлекать сохраненный индекс в другое рабочее дерево. Например, если у вас есть автоматизированная система тестирования, которая использует то, что находится в рабочем дереве, а не то, что в индексе, вы можете git stash -k
, запустить тесты, затем git reset --hard
, чтобы снова применить sta sh и применить и отбросить sta sh.
досадно, поскольку git stash
не делает sta sh, если индекс и рабочее дерево совпадают HEAD
, git stash -k
это сложно использовать для проведения такого рода автоматического тестирования, потому что нет никакой гарантии, что оно действительно сделало sh.