我确实有以下问题。我正在编写一个脚本,它在文件夹中搜索存储库,在网上查找遥控器并将所有新数据拉入存储库,通知我新的更改。主要思想很明确。我在 Windows 7 x64 上使用 python 2.7,使用 pygit2 访问 git 功能。命令行支持简单的命令“git pull 'origin'”,但是git api比较复杂,看不懂。好吧,我走了这么远:
import pygit2
orepository=pygit2.Repository("path/to/repository/.git")
oremote=repo.remotes[0]
result=oremote.fetch()
此代码检索新对象并将其下载到存储库中,但不会更新主分支或检出新数据。通过使用 TortoiseGit 检查存储库,我发现没有任何方法已检出,甚至在显示日志时也不会出现新的日志消息。我需要使用 git pull 命令来刷新存储库和工作副本。现在我的问题是:我需要做什么才能通过使用 pygit2 来完成所有这些工作?我的意思是,我通过获取它们来下载更改,但是我需要做什么呢?我也想更新主分支和工作副本......提前感谢您帮助我解决我的问题。此致。
1945 次
1 回答
3
Remote.fetch()
不会更新 workdir 中的文件,因为那离它的工作很远。如果您想更新当前分支并签出这些文件,您还需要执行这些步骤,通过Repository.create_reference()
或Reference.target=
取决于您当时拥有的数据,然后Repository.checkout_head()
如果您确实决定更新。
git-pull
是一个脚本,它根据传递的配置和标志执行许多不同的步骤。当您编写一个工具来在多个存储库上模拟它时,您需要弄清楚您想要做什么,而不是希望一切都设置好,这样git-pull
就不会让您感到惊讶。
于 2014-05-20T02:42:47.577 回答