Python使用GitPython操作Git版本库的方法
作者:Ethandyp 发布时间:2021-04-28 07:22:16
标签:python,git,版本库
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()
来源:https://www.jianshu.com/p/6d4cbf588267


猜你喜欢
- 没事在这里发一下关于数据库大批量插入数据的效率对比,用ACCESS和MSSQL,数值是在本机测试,根据不同的环境和配置,数值可能会有较大差别
- 1.获取function形参个数functionName.length2.较适用的运算符delete:删除以前定义的对象属性或方法的引用vo
- 如下所示:from numpy import *import numpy as npimport matplotlib.pyplot as
- 通常我们做网站,设计版面布局是第一步,如何做到版面布局具有创意又美观大方呢?这就需要一定的版面处理功底。让我们先来了解一下版面布局的步骤:一
- vue 中的 $slot以前一直不知到这个东西,后来发现 vue api 中 藏着很多的 很神奇的 api,比如这个具名插槽很好理解,但是那
- 介绍Django是一个Web框架——一套用于帮助开发交互式网站的工具。Django能够响应网页请求,还能让我们更轻松地读写数据库、管理用户等
- 小张的Pycharm最近弹出提示框 Your license has expired提示过期....纳尼!!!!是不是看到这个也很头疼,。于
- 本文实例为大家分享了js轮播图实现代码,供大家参考,具体内容如下思路:1、首先要有个盛放图片的容器,设置为单幅图片的宽高,且overflow
- 在Python中,json指的是符合json语法格式的字符串,可以单行或者多行。它可以方便的在使用在多种语言中,这里介绍的是在python中
- 1 Python自动绘图在这里我主要运用了pyautocad库进行AutoCAD的自动化操作,pyautocad是一款功能非常强大的Auto
- 文末附完整源代码实现过程...想实现这样一个功能,然后pyqt5中又没有现成的组件可以使用,于是就想着只能通过绘图的方式来实现。说到绘图的话
- Flask框架介绍Flask诞生于2010年,是Armin ronacher用Python语言基于Werkzeug工具箱编写的轻量级Web开
- 初学Python,这个问题搞了我好久,现在来分享下我的解决思路,希望可以帮到大家。先说下python引入模块的顺序:首先现在当前文件夹下查找
- 本例已经实现的数据库password,数据库的表以及表结构如下:表中已经插入的信息:实现思路无非是用户完成账户密码输入并点击登录
- CSS Modules:局部作用域 & 模块化CSS Modules 为每一个局部类赋予全局唯一的类名,这样组件样式间就不会相互影响
- 本文实例讲述了Python实现针对给定字符串寻找最长非重复子串的方法。分享给大家供大家参考,具体如下:问题:给定一个字符串,寻找其中最长的重
- 1. 前言熟悉 Django 的朋友应该知道,我们可以通过「 inspectdb 」命令将数据库表反向生成 Model 并写入到文件中去比如
- 本文实例为大家分享了python画条形图的具体代码,供大家参考,具体内容如下在做毕设的过程中有些数据用表格来展现,会很难看出数据之间的差别,
- 前言我们平时的工作中可能需要和服务端建立链接,从而来接受服务端推送的数据,常用的就是eventSource,我们平时常用的就是通过get的方
- 最近我因为要安装 Firebug 1.4 导致我不得不安装了 Firefox 3.5 ,所以很不小心地接触到了Wordpress后台那漂亮的