【问题标题】:Is it possible to download ONLY files changed in a commit/revision using git archive是否可以使用 git archive 仅下载提交/修订中更改的文件
【发布时间】:2012-08-22 12:50:29
【问题描述】:

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

【问题讨论】:

  • 我不确定你的意思。 git archive是创建一个归档文件,比如tar。

标签: git bitbucket


【解决方案1】:

使用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。只需将 &lt;tree-ish&gt; 替换为提交,例如e8d7a3d
【解决方案2】:

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

示例:如果您想要 bitbucket 的最新更改,它看起来像:

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

【讨论】:

  • “你可能会通过日志找出那些”并且有一个命令可以自动只保存更改的文件吗?
  • 不,您可以运行此命令git show &lt;commit&gt; 来查看更改的补丁,但您无法获得整个文件。如果您想要该文件,则必须编写一些疯狂的脚本,在其中通过管道传输 show 或 log 命令的输出,解析文件名,抓取每个文件并将它们放入存档中……这并不容易.
猜你喜欢
  • 2016-02-08
  • 1970-01-01
  • 2012-09-22
  • 2012-11-22
  • 2014-02-02
  • 1970-01-01
  • 2021-06-08
  • 1970-01-01
  • 2017-06-01
相关资源
最近更新 更多