我确实有以下问题。我正在写一个脚本,它在文件夹中搜索存储库,查找网络上的遥控器,并将所有新数据拉入存储库,通知我新的更改。大意是明确的。我在Windows7 x64上使用Python2.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,我需要做些什么才能做到这一切?我的意思是,我通过获取它们来下载更改,但是我需要做什么呢?我还想更新主分支和工作副本...提前感谢你帮我解决我的问题。诚挚的问候。
发布于 2014-05-20 10:42:48
Remote.fetch()不会更新工作目录中的文件,因为这离它的工作非常远。如果您想要更新当前分支并签出这些文件,您还需要执行这些步骤,根据您当时拥有的数据,通过Repository.create_reference()或Reference.target=,然后执行Repository.checkout_head() (如果您确实决定更新)。
git-pull是一个脚本,它根据所传递的配置和标志执行许多不同的步骤。当您编写一个工具来在多个存储库上模拟它时,您需要弄清楚您想要做什么,而不是希望一切都设置好,这样git-pull就不会让您感到惊讶。
https://stackoverflow.com/questions/23200789
复制相似问题