是否可以使用 git archive 仅下载提交/修订中更改的文件

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

使用 git archive 命令是否可以从特定提交 ID 的存储库中仅下载已更改/受影响的文件?是否可以使用网络界面@bitbucket?

git bitbucket
3个回答
12
投票

使用

git diff-tree
列出提交中更改的文件,并将它们传递到
git archive
的命令行。

git archive --format=zip --output=commit_files.zip <tree-ish> `git diff-tree --no-commit-id --name-only -r <tree-ish> | sed ':a;N;$!ba;s/\n/ /g'`

1
投票

您可以创建专注于特定提交的存档文件,但它会存档整个存储库,而不仅仅是更改/受影响的文件。不过你也许可以通过日志找出这些。

示例:如果您想要 bitbucket 的最新更改,它将类似于:

git archive -format=tar --remote=<PATH_TO_YOUR_REPO> HEAD

0
投票

使用 git diff 你可以轻松做到这一点,但是你需要 2 次提交才能获得它们之间的差异 f.ex 之间的 head 和 head - 1.

对于上次提交中更改的文件:

git archive --output=latest_artifact.zip HEAD $(git diff --name-only HEAD HEAD^1)

对于 2 个提交 ID 之间更改的文件:

git archive --output=latest_artifact.zip HEAD $(git diff --name-only <commit_id_1>..<commit_id_2>)

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