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入门教程
Feb 08 Python
Python常用时间操作总结【取得当前时间、时间函数、应用等】
May 11 Python
python+logging+yaml实现日志分割
Jul 22 Python
django 邮件发送模块smtp使用详解
Jul 22 Python
Django logging配置及使用详解
Jul 23 Python
python中栈的原理及实现方法示例
Nov 27 Python
python 多进程队列数据处理详解
Dec 23 Python
Pycharm debug调试时带参数过程解析
Feb 03 Python
重写django的model下的objects模型管理器方式
May 15 Python
浅谈Python中的生成器和迭代器
Jun 19 Python
python的flask框架难学吗
Jul 31 Python
python 密码学示例——理解哈希(Hash)算法
Sep 21 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获取当月最后一天函数分享
2015/02/02 PHP
[原创]php正则删除html代码中class样式属性的方法
2017/05/24 PHP
PHP使用ActiveMQ实例
2018/02/05 PHP
Laravel 已登陆用户再次查看登陆页面的自动跳转设置方法
2019/09/30 PHP
javascript编程起步(第二课)
2007/01/10 Javascript
xtree.js 代码
2007/03/13 Javascript
tangram框架响应式加载图片方法
2013/11/21 Javascript
jQuery的live()方法对hover事件的处理示例
2014/02/27 Javascript
如何判断微信内置浏览器(通过User Agent实现)
2014/09/01 Javascript
javascript引擎长时间独占线程造成卡顿的解决方案
2014/12/03 Javascript
JavaScript显示表单内元素数量的方法
2015/04/02 Javascript
javascript实现英文首字母大写
2015/04/23 Javascript
jQuery插件datepicker 日期连续选择
2015/06/12 Javascript
测试IE浏览器对JavaScript的AngularJS的兼容性
2015/06/19 Javascript
jQuery结合CSS制作动态的下拉菜单
2015/10/27 Javascript
AngularJS实现单独作用域内的数据操作
2016/09/05 Javascript
AngularJS中过滤器的使用与自定义实例代码
2016/09/17 Javascript
使用 Vue 绑定单个或多个 Class 名的实例代码
2018/01/08 Javascript
vue中锚点的三种方法
2018/07/06 Javascript
轻松学习JavaScript函数中的 Rest 参数
2019/05/30 Javascript
vue 路由子组件created和mounted不起作用的解决方法
2019/11/05 Javascript
通过js实现压缩图片上传功能
2020/02/25 Javascript
Python多线程编程(二):启动线程的两种方法
2015/04/05 Python
Python中super关键字用法实例分析
2015/05/28 Python
基于Python实现文件大小输出
2016/01/11 Python
浅谈Python2.6和Python3.0中八进制数字表示的区别
2017/04/28 Python
python实现的MySQL增删改查操作实例小结
2018/12/19 Python
python系统指定文件的查找只输出目录下所有文件及文件夹
2020/01/19 Python
Python输出指定字符串的方法
2020/02/06 Python
对python中list的五种查找方法说明
2020/07/13 Python
2021年的Python 时间轴和即将推出的功能详解
2020/07/27 Python
C#可否对内存进行直接的操作
2015/02/26 面试题
酒店仓管员岗位职责
2014/04/28 职场文书
公务员党的群众路线教育实践活动学习心得体会
2014/10/30 职场文书
皇城相府导游词
2015/02/06 职场文书
Win11如何默认打开软件界面最大化?Win11默认打开软件界面最大化的方法
2022/07/15 数码科技