【发布时间】:2012-08-22 12:50:29
【问题描述】:
使用 git archive commmand 是否可以从特定提交 id 的存储库中仅下载更改/受影响的文件?是否可以使用网络界面@bitbucket?
【问题讨论】:
-
我不确定你的意思。
git archive是创建一个归档文件,比如tar。
使用 git archive commmand 是否可以从特定提交 id 的存储库中仅下载更改/受影响的文件?是否可以使用网络界面@bitbucket?
【问题讨论】:
git archive是创建一个归档文件,比如tar。
使用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'`
【讨论】:
<tree-ish> 替换为提交,例如e8d7a3d
您可以创建一个专注于特定提交的存档文件,但它会存档整个 repo,而不仅仅是更改/受影响的文件。不过,您可能可以通过日志找出这些。
示例:如果您想要 bitbucket 的最新更改,它看起来像:
git archive -format=tar --remote=<PATH_TO_YOUR_REPO> HEAD
【讨论】:
git show <commit> 来查看更改的补丁,但您无法获得整个文件。如果您想要该文件,则必须编写一些疯狂的脚本,在其中通过管道传输 show 或 log 命令的输出,解析文件名,抓取每个文件并将它们放入存档中……这并不容易.