使用Git创建已更改文件的存档

时间:2012-04-05 04:26:12

标签: git

我正在寻找一个简单的解决方案来存档最近更改过的文件。

我从google

获得了这个简单的命令
git archive -o update.zip HEAD $(git diff --name-only HEAD^)

当我在GIT BUSH中运行时,它一直在说 致命:不是有效的对象名称

3 个答案:

答案 0 :(得分:12)

我正在使用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确实存在。

答案 1 :(得分:1)

我使用此别名来包含不在HEAD中的新文件:

alias gittar='tar -czvf working-files.tgz \
              $(git status -s | sed -r "s/..(.*)/\1 /")'

答案 2 :(得分:1)

您只需要过滤掉在diff中删除的文件即可解决该错误:

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

该任务的开销可能是git archive,因此您应该使用@eckes's answer
但是,您仍然应该添加--diff-filter=d以便从存档中排除已删除的文件。