2

我正在尝试使用以下命令在最近 3 次提交中创建文件存档。

git archive -o archive.zip $(git diff --name-only HEAD~3)

但是在最后一次提交中,我删除了一些文件,这显示在diff输出中。所以我收到了这个错误:

fatal: pathspec 'public/uploads/5839529ba9381.png' did not match any files

如何忽略在 git 存档期间提交中删除的文件?我已经尝试过这个--ignore-unmatch论点,但它不起作用。

4

2 回答 2

1

我处于同样的情况,这是可行的。

tar vczf archive.tar.gz --ignore-failed-read `git diff --name-only hash1 hash2`

我也在寻找,git archive ignore deleted files。因为我想创建在两个分支/标签/哈希等之间添加/修改的文件的存档。

解决方案是使用tar而不是 git archive,并以相同的方式传递输出,git diff这里唯一的好处是您实际上可以使用 flag忽略丢失的文件(在提交之间删除--ignore-failed-read) 。还有一点需要注意的是,这个标志应该在归档文件名之后。

于 2018-10-23T15:57:55.993 回答
0

本质上git archive是用来备份某个时间点的状态,不适合备份时间线的修改,即不能保存delete filesby的动作git archive

如果要备份最近的 3 个提交,可以使用git bundle命令。

git bundle create last_three_commit.bundle HEAD~3..HEAD

或者

git bundle create last_three_commit.bundle -3 HEAD    

请运行git bundle --help以获取更多详细信息。

于 2016-11-30T05:04:14.557 回答