11

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

我从谷歌得到这个简单的命令

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

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

4

3 回答 3

17

在那种情况下,我使用这个答案告诉我

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确实存在。

于 2012-04-05T06:51:15.980 回答
3

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

alias gittar='tar -czvf working-files.tgz \
              $(git status -s | sed -r "s/..(.*)/\1 /")'
于 2017-09-01T00:36:49.150 回答
2

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

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

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

于 2019-01-16T09:09:43.420 回答