如何使用python从git存储库下载单个文件

新手上路,请多包涵

我想使用 python 从我的 git 存储库下载单个文件。

目前我正在使用 gitpython 库。 Git clone 在下面的代码中运行良好,但我不想下载整个目录。

 import os
from git import Repo
git_url = 'stack@127.0.1.7:/home2/git/stack.git'
repo_dir = '/root/gitrepo/'
if __name__ == "__main__":
    Repo.clone_from(git_url, repo_dir, branch='master', bare=True)
    print("OK")

原文由 Ravi Ranjan 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 952
1 个回答

不要将 Git 存储库视为文件的集合,而是快照的集合。 Git 不允许您选择要下载的文件,但允许您选择要下载的快照数量:

 git clone stack@127.0.1.7:/home2/git/stack.git

将下载所有文件的所有快照,同时

git clone --depth 1 stack@127.0.1.7:/home2/git/stack.git

只会下载所有文件的最新快照。您仍然会下载所有文件,但至少会删除它们的所有历史记录。

在这些文件中,您可以简单地选择一个您想要的,然后删除其余的:

 import os
import git
import shutil
import tempfile

# Create temporary dir
t = tempfile.mkdtemp()
# Clone into temporary dir
git.Repo.clone_from('stack@127.0.1.7:/home2/git/stack.git', t, branch='master', depth=1)
# Copy desired file from temporary dir
shutil.move(os.path.join(t, 'setup.py'), '.')
# Remove temporary dir
shutil.rmtree(t)

原文由 Nils Werner 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题