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

问题描述 投票:8回答:3

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

我从google得到这个简单的命令

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

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

git
3个回答
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
投票

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

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

1
投票

您只需要过滤掉在该差异时删除的文件以修复该错误:

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

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

© www.soinside.com 2019 - 2024. All rights reserved.