我確實遇到以下問題。我正在編寫一個腳本,它在文件夾中搜索存儲庫,在網絡上查找遠程數據並將所有新數據拖入存儲庫,通知我有關新更改。主要想法很清楚。我在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來完成所有這些?我的意思是,我通過提取它們來下載更改,但是我需要做什麼?我想更新主分支和工作副本... 非常感謝您提前幫助解決我的問題。 最好的問候。用pygit2提取和集成遠程更改
2
A
回答
2
Remote.fetch()
不更新workdir中的文件,因爲它離它的工作很遠。如果您想要更新當前分支並檢出這些文件,您還需要通過Repository.create_reference()
或Reference.target=
執行這些步驟,具體取決於您當時擁有的數據,然後例如Repository.checkout_head()
如果你確實決定更新。
git-pull
是一個腳本,根據傳遞的配置和標誌執行很多不同的步驟。當你編寫一個工具來模擬多個存儲庫時,你需要弄清楚你想要做什麼,而不是希望一切都設置好,以便git-pull
不會讓你感到驚訝。
相關問題
- 1. 如何使用pygit2推送到遠程?
- 2. Github提交遠程更改
- 3. 使用pygit2創建提交
- 4. 遠程jprofiler集成
- 5. sftp彈簧集成 - 從遠程提取文件
- 6. 如何更改rspec集成或遠程規格的RAILS_ENV?
- 7. 提取遠程遠程分支和遠程分支
- 8. 從遠程Git存儲庫提取變更集
- 9. 跟蹤遠程未完成的更改
- 10. 伴侶和遠程Java服務集成
- 11. 與每個提取後更改遠程分支git問題
- 12. xcode git無法從遠程存儲庫中提取更改
- 13. 使用git和upstart獲取遠程更改
- 14. 使用pygit2在遠程存儲庫上創建分支
- 15. Xcode 6遠程集成
- 16. 在遠程提交和推送時放棄本地git更改
- 17. 集成測試和UI更改
- 18. 如何使用rebase而不是合併來提取所有遠程更改?
- 19. Git:無法更改遠程
- 20. Aptana同步遠程更改
- 21. 更改遠程.config文件
- 22. 遠程更改通知
- 23. 在Microsoft GIT提供程序中更改BitBucket的遠程URL
- 24. 是否有可能在遠程回購塔中提交遠程更改?
- 25. 使用PHP更改遠程地址
- 26. 使用TeamCity更改遠程app.config
- 27. PostgreSQL的提取DOW和更改時區
- 28. 如何在git中將本地更改與遠程存儲庫上的更改集成在一起?
- 29. 如何提取Mercurial中變更集的所有更改文件?
- 30. 在Zenoss遠程數據集成
'Repository.checkout_head()'和'Repository.checkout('HEAD')'有什麼區別?文檔中提到,在沒有參數的情況下調用'Repository.checkout'會將checkout_index作爲默認值。 – avck
更新引用後,如果我做'Repository.checkout('HEAD')',索引保持修改,即'Repository.status()'顯示一個包含更改的文件。使用'Repository.checkout_head()'也會清除索引。 你能解釋一下這裏發生了什麼嗎? – avck
沒有看到代碼的順序或命令的輸出,這將是非常困難的。請注意,缺省策略是'GIT_CHECKOUT_STRATEGY_SAFE',如果發生衝突(這可能是發生的事情),則會中止檢出,因爲您說更改後的文件「保留」。 –