2012-04-05 5 views
6

Я ищу простое решение для создания архива недавно измененного файла.Использование Git для создания архива измененных файлов

Я получаю эту простую команду google

git archive -o update.zip HEAD $(git diff --name-only HEAD^) 

Когда я запускаю его в GIT БУШ, он продолжает говорить, говоря со смертельным исходом: Недопустимое имя объекта

+1

Каких команда делает это взялось? (Что такое вывод 'git diff -name-only HEAD ^'? Вы находитесь в действительном репозитории, верно?) – Cascabel

+0

git diff --name-only HEAD^будет выводить список измененных файлов, которые я хотел бы архив. Я проверил эту команду с тестовым репозиторием, он работает как exptected. Это не работает в моем реальном репозитории проектов asp.net – Kuroro

+0

Я подозреваю, что некоторые из них не могут архивировать? двоичная? – Kuroro

ответ

11

Я использую this answer в в этом случае, который сообщает мне об

tar czf changed-files.tar.gz `git diff --name-only [diff options]` 

Например, для создания е архив, содержащий файлы, измененные в течение последних четырех изменений, я бы

tar czf changed-files.tar.gz `git diff --name-only HEAD~4..` 

Это предполагает –   конечно   – что HEAD~4 действительно существует.

+0

eckes, Спасибо, что отметим, что HEAD может использовать это. – Kuroro

+0

-1: Это решение работает только в том случае, если файлы в пределах diff существуют в HEAD, независимо от того, какой фиксатор вы выберете. –

1

Я использую этот псевдоним, чтобы включить новые файлы не РУКОВОДИТЕЛЬ:

alias gittar='tar -czvf working-files.tgz \ 
       $(git status -s | sed -r "s/..(.*)/\1 /")' 
Смежные вопросы