Простой и легкий и, очевидно, правильный способ сделать это: просто сделать коммит (как bk2204 предлагает ).
Но, поскольку git archive
занимает <tree-ish>
, вы можете сделать это без выполнения коммита. Просто сделайте дерево частью коммита, что составляет половину (или больше) фактического коммита, и затем используйте это:
git archive [additional options] $(git write-tree)
Проблема здесь в том, что git write-tree
сейчас напишет все, что находится в index . Это означает, что вам нужно добавить все обновленные файлы в индекс, даже если вы не собираетесь делать коммит. Вы можете сделать это с помощью временного индекса, если вы хотите получить дополнительную фантазию, но сначала просто набрать add -u
:
git add -u
git archive [additional options] $(git write-tree)
Еще один способ получить файлы рабочего дерева в коммит, не делая коммит самостоятельно, - это использовать git stash
для выполнения работы. Это запишет текущее рабочее дерево в новый коммит. Следовательно:
git stash push
git archive [additional options] refs/stash
git stash pop --index
сделает работу более или менее. less происходит, когда нечего копить, в этом случае git stash push
ничего не делает, и вы не должны запускать git stash pop
. В этом конкретном случае вы можете заархивировать HEAD
- но это раздражает, если git stash push
что-то сделал. Вы можете добавить больше слоев сценариев, чтобы справиться с этим, но на самом деле, что плохого в том, чтобы просто фиксировать сейчас?