小编典典

如何从 git 存储库中只签出一个文件?

all

如何从 git repo 中只签出一个文件?


阅读 91

收藏
2022-03-10

共1个答案

小编典典

最初的回答:

git archive --format=tar --remote=origin HEAD:path/to/directory -- filename | tar -O -xf -

当前(2018 年)页面“关于在 GitHub 上归档内容和数据”建议使用第三方服务,如GHTorrentGH
Archive


所以你也可以处理本地副本/克隆:

如果您有此答案中提到的裸存储库的本地副本,您也可以执行以下操作,

git --no-pager --git-dir /path/to/bar/repo.git show branch:path/to/file >file

或者您必须首先克隆存储库,这意味着您可以获得完整的历史记录: - 在 .git 存储库中 - 在工作树中。

  • 但是 您可以进行 (如果您使用的是 Git1.7+):
    • 启用稀疏结帐选项 ( git config core.sparsecheckout true)
    • 在文件中添加您想看到的.git/info/sparse-checkout内容
    • 重新阅读工作树以仅显示您需要的内容

要重新读取工作树:

$ git read-tree -m -u HEAD

这样,您最终会得到一个工作树,其中包含您想要的内容(即使它只有一个文件)

避免下载历史记录的 bash 函数,它检索单个分支并检索您需要的文件或目录列表。

2022-03-10