使用pygit2提取和集成远程更改

时间:2014-04-21 15:51:24

标签: python git fetch pull pygit2

我确实有以下问题。我正在编写一个脚本,在文件夹中搜索存储库,在网络上查找遥控器并将所有新数据提取到存储库中,通知我有关新的更改。主要想法很清楚。我在Windows 7 x64上使用python 2.7,使用pygit2访问git功能。该命好的,我走得那么远: import pygit2 orepository=pygit2.Repository("path/to/repository/.git") oremote=repo.remotes[0] result=oremote.fetch() 此代码检索新对象并将其下载到存储库中,但不更新主分支或检查新数据。通过使用TortoiseGit检查存储库,我发现没有任何方法可以检出,甚至在显示日志时也不会显示新的日志消息。我需要使用git pull命令来刷新存储库和工作副本。现在我的问题是:使用pygit2我需要做些什么呢?我的意思是,我通过获取更改来下载更改,但是我需要做什么呢?我想更新主分支和工作副本... 提前感谢您帮助解决我的问题。 最诚挚的问候。

1 个答案:

答案 0 :(得分:3)

Remote.fetch()不会更新workdir中的文件,因为它的工作距离很远。如果您要更新当前分支并检出这些文件,您还需要通过Repository.create_reference()Reference.target=执行这些步骤,具体取决于您当时拥有的数据,然后是Repository.checkout_head()如果你决定更新。

git-pull是一个脚本,根据传递的配置和标志执行许多不同的步骤。当您编写工具以在多个存储库中模拟它时,您需要弄清楚您想要做什么,而不是希望所有内容都设置为只有git-pull赢得了让你大吃一惊。