試了一圈發(fā)現(xiàn),git庫的用法設(shè)置非常符合原生git命令死遭,只不過之間加了個.
而已泄鹏。
比如原本命令行里是git add .
朱巨,這里就是repo.git.add('.')
,
原本是git commit -m "信息"
颖医,這里就是repo.git.commit(m='信息')
可以說減少了很多學(xué)習(xí)時間位衩,基本上我很多都是沒參考文檔自己猜出來的也能用。
sudo pip install gitpython
庫安裝好后可以直接在python中用了熔萧。
創(chuàng)建蚂四、識別、克隆倉庫
文件夾地址可以是全路徑哪痰,也可以是.
當(dāng)前文件夾遂赠、../
上級文件夾等用法。
# 在文件夾里新建一個倉庫晌杰,如果已存在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狀態(tài)
print repo.git.status() # 返回通常的status幾句信息
print repo.is_dirty() # 返回是否有改動(包括未add和未commit的)
# 添加文件 可以是單個文件名跷睦,也可以是`[ ]`數(shù)組,還可以是`.`代表全部
print repo.git.add( '文件名' )
# commit提交
print repo.git.commit( m='提交信息' )
遠(yuǎn)程交互操作
# 創(chuàng)建remote:
remote = repo.create_remote(name='gitlab', url='git@gitlab.com:USER/REPO.git')
# 遠(yuǎn)程交互:
remote = repo.remote()
remote.fetch()
remote.pull()
remote.push()
實驗效果
# 原意是返回工作區(qū)是否改變的狀態(tài)
# 但是測試發(fā)現(xiàn)肋演,工作區(qū)有變動它返回False抑诸,沒變動卻返回True
print repo.is_dirty()
生成tar壓縮包
# 壓縮到 tar 文件
with open('repo.tar', 'wb') as fp:
repo.archive(fp)