Python操作Git库 `GitPython`

参考文章
参考文章
复杂点的参考

试了一圈发现,git库的用法设置非常符合原生git命令,只不过之间加了个.而已。
比如原本命令行里是git add .,这里就是repo.git.add('.')
原本是git commit -m "信息",这里就是repo.git.commit(m='信息')
可以说减少了很多学习时间,基本上我很多都是没参考文档自己猜出来的也能用。

sudo pip install gitpython

库安装好后可以直接在python中用了。

创建、识别、克隆仓库

文件夹地址可以是全路径,也可以是.当前文件夹、../上级文件夹等用法。

# 在文件夹里新建一个仓库,如果已存在git仓库也不报错不覆盖没问题
repo = git.Repo.init(path='文件夹地址')

# 选择已有仓库
repo = git.Repo( '仓库地址' )

# 克隆仓库
repo = git.Repo.clone_from(url='git@github.com:USER/REPO.git', to_path='../new')

常用语句:

# 查看repo状态
print repo.git.status()   # 返回通常的status几句信息
print repo.is_dirty()    # 返回是否有改动(包括未add和未commit的)

# 添加文件 可以是单个文件名,也可以是`[ ]`数组,还可以是`.`代表全部
print repo.git.add( '文件名' )

# commit提交
print repo.git.commit( m='提交信息' )

远程交互操作

# 创建remote:
remote = repo.create_remote(name='gitlab', url='git@gitlab.com:USER/REPO.git')

# 远程交互:
remote = repo.remote()
remote.fetch()
remote.pull()
remote.push()

实验效果

 # 原意是返回工作区是否改变的状态
# 但是测试发现,工作区有变动它返回False,没变动却返回True
print repo.is_dirty()

生成tar压缩包

# 压缩到 tar 文件
with open('repo.tar', 'wb') as fp:
    repo.archive(fp)
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Git 基础 基本原理 客户端并不是只提取最新版本的文件快照,而是把代码仓库完整的镜像下来。这样一来,任何一处协同...
    __silhouette阅读 16,147评论 5 147
  • Git 命令行学习笔记 Git 基础 基本原理 客户端并不是只提取最新版本的文件快照,而是把代码仓库完整的镜像下来...
    sunnyghx阅读 4,091评论 0 11
  • Git常用语法 [TOC] Git简介 描述 ​ Git(读音为/gɪt/。)是一个开源的分布式版本控制系统,...
    君惜丶阅读 3,895评论 0 13
  • 一、移情法是,用你热爱的英语小说,带动你阅读英文原著,听有关的有声读物,模仿作者的笔法,突破英语中听说读写的难关。...
    陈徙南阅读 660评论 0 0
  • Devise自身插件中不带异步邮件处理。 如果想用异步如何处理?自己扩展Devise?没必要。大家可以在rubyg...
    rubywine阅读 934评论 0 1

友情链接更多精彩内容