Python使用GitPython操作Git版本库的方法


Posted in Python onFebruary 29, 2020

GitPython 是一个用于操作 Git 版本库的 python 包,它提供了一系列的对象模型(库 - Repo、树 - Tree、提交 - Commit等),用于操作版本库中的相应对象。

1、导包

from git import *

2、初始化git仓库

CURRENT_DIR = os.path.dirname(os.path.abspath(__file__))
empty_repo = Repo.init(os.path.join(CURRENT_DIR, 'bbs')) # bbs目录不存在则新建

3、如果git仓库已存在,直接获取

repo = Repo(os.path.join(CURRENT_DIR, 'bbs'))

4、获取当前远程库

repo.remotes # 获取当前有哪些远程库 = git remote -v命令,返回一个repo列表

5、新建远程库

# 新建远程库 = git remote add origin git_url, 返回Remote对象(<class 'git.remote.Remote'>)
origin = repo.create_remote('origin', git_url)

6、fetch

origin.fetch()

7、建立一个关联远程分支的本地分支,分三步

empty_repo.create_head('master', origin.refs.master) # create local branch "master" from remote "master"
empty_repo.heads.master.set_tracking_branch(origin.refs.master) # set local "master" to track remote "master
empty_repo.heads.master.checkout() # checkout local "master" to working tree

# 以上三步可以简化为一行代码
repo.create_head('master', origin.refs.master).set_tracking_branch(origin.refs.master).checkout() # 建立本地master分支,关联远程master分支,checkout

8、获取所有远程分支

origin.refs # 返回所有远程分支列表
 [<git.RemoteReference "refs/remotes/new_origin/develop">, <git.RemoteReference "refs/remotes/new_origin/master">]

9、获取所有本地分支(git.HEAD)和远程分支(git.RemoteReference)

repo.refs # 返回所有本地分支列表

10、获取本地heads

repo.heads # 返回Head列表

11、获取当前head指向

repo.head.reference

12、切换分支

a、本地存在此分支 repo.head.reference = repo.heads.develop b、本地不存在,需要从远程拉去 repo.create_head('master', origin.refs.master).set_tracking_branch(origin.refs.master).checkout()

总结

到此这篇关于Python使用GitPython操作Git版本库的方法的文章就介绍到这了,更多相关python操作git版本库内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
使用python实现ANN
Dec 20 Python
新手常见6种的python报错及解决方法
Mar 09 Python
mac下给python3安装requests库和scrapy库的实例
Jun 13 Python
python编写简易聊天室实现局域网内聊天功能
Jul 28 Python
Python判断telnet通不通的实例
Jan 26 Python
用python实现刷点击率的示例代码
Feb 21 Python
Djang的model创建的字段和参数详解
Jul 27 Python
pygame实现成语填空游戏
Oct 29 Python
Python性能分析工具Profile使用实例
Nov 19 Python
python连接mysql有哪些方法
Jun 24 Python
解决PyCharm无法使用lxml库的问题(图解)
Dec 22 Python
如何用Django处理gzip数据流
Jan 29 Python
如何使用python代码操作git代码
Feb 29 #Python
使用 Python 遍历目录树的方法
Feb 29 #Python
python 已知一个字符,在一个list中找出近似值或相似值实现模糊匹配
Feb 29 #Python
在python3中实现查找数组中最接近与某值的元素操作
Feb 29 #Python
python pandas移动窗口函数rolling的用法
Feb 29 #Python
基于Python fminunc 的替代方法
Feb 29 #Python
浅谈SciPy中的optimize.minimize实现受限优化问题
Feb 29 #Python
You might like
谈谈PHP语法(2)
2006/10/09 PHP
关于php fread()使用技巧
2010/01/22 PHP
解析php php_openssl.dll的作用
2013/07/01 PHP
关于php程序报date()警告的处理(date_default_timezone_set)
2013/10/22 PHP
使用PHP静态变量当缓存的方法
2013/11/13 PHP
php实现文件管理与基础功能操作
2017/03/21 PHP
PhpStorm2020 + phpstudyV8 +XDebug的教程详解
2020/09/17 PHP
JS 自动完成 AutoComplete(Ajax 查询)
2009/07/07 Javascript
Three.js源码阅读笔记(光照部分)
2012/12/27 Javascript
js 三级关联菜单效果实例
2013/08/13 Javascript
Javascript实现滚动图片新闻的实例代码
2013/11/27 Javascript
JS比较两个时间大小的简单示例代码
2013/12/20 Javascript
jquery控制display属性为none或block
2014/03/31 Javascript
javascript跨域的4种方法和原理详解
2014/04/08 Javascript
AngularJS基础 ng-cloak 指令简单示例
2016/08/01 Javascript
Select2.js下拉框使用小结
2016/10/24 Javascript
nodejs中全局变量的实例解析
2017/03/07 NodeJs
vue中使用input[type=&quot;file&quot;]实现文件上传功能
2018/09/10 Javascript
浅谈JavaScript 代码简洁之道
2019/01/09 Javascript
[04:21]狐狸妈带你到现场 DOTA2 TI中国区预选赛线下赛路线指引
2014/05/22 DOTA
学习python类方法与对象方法
2016/03/15 Python
python实现对excel进行数据剔除操作实例
2017/12/07 Python
简单实现python进度条脚本
2017/12/18 Python
pytorch训练imagenet分类的方法
2018/07/27 Python
vim自动补全插件YouCompleteMe(YCM)安装过程解析
2019/10/21 Python
Python基于pip实现离线打包过程详解
2020/05/15 Python
屈臣氏官方旗舰店:亚洲享负盛名的保健及美妆零售商
2019/03/15 全球购物
Expedia瑞典官网:预订度假屋、酒店、汽车租赁、机票等
2021/01/23 全球购物
梅花魂教学反思
2014/04/25 职场文书
大学生求职信范文
2014/05/24 职场文书
优秀班主任材料
2014/12/16 职场文书
公务员年度考核登记表个人总结
2015/02/12 职场文书
慰问信模板
2015/02/14 职场文书
2019朋友新婚祝福语精选
2019/10/10 职场文书
导游词之镇江-金山寺
2019/10/14 职场文书
python树莓派通过队列实现进程交互的程序分析
2021/07/04 Python