Я пишу программу, которая должна одновременно извлекать разные коммиты из одного и того же репозитория (например, в this question, но одновременно).Git plumbing: экспортировать дерево при фиксации без касания HEAD/index
Фарфоровые команды, такие как git checkout
и git archive
, работают с индексом, поэтому в любое время, когда необходимо будет выполнить фиксацию, ему нужно будет переместить HEAD и/или пройти сначала по индексу.
Есть ли простой способ просто сбрасывать объект Git tree в каталог в файловой системе?
'git archive' не работает с индексом и не требует внесения изменений в HEAD, индекс или рабочий каталог. 'git archive -o /tmp/somefile.tar sha1-of-old-commit', вероятно, то, что вы хотите. Тег, имя ветви или другая форма ref (например, 'dev @ {3 дня назад}') одинаково подходят для аргумента sha1. – twalberg