1. 程式人生 > 程式設計 >如何使用python程式碼操作git程式碼

如何使用python程式碼操作git程式碼

git簡介

Git 是一個開源的分散式版本控制系統,用於敏捷高效地處理任何或小或大的專案。

Git 是 Linus Torvalds 為了幫助管理 Linux 核心開發而開發的一個開放原始碼的版本控制軟體。

Git 與常用的版本控制工具 CVS,Subversion 等不同,它採用了分散式版本庫的方式,不必伺服器端軟體支援。

Git 與 SVN 區別

Git 不僅僅是個版本控制系統,它也是個內容管理系統(CMS),工作管理系統等。

如果你是一個具有使用 SVN 背景的人,你需要做一定的思想轉換,來適應 Git 提供的一些概念和特徵。

Git 與 SVN 區別點:

1、Git 是分散式的,SVN 不是:這是 Git 和其它非分散式的版本控制系統,例如 SVN,CVS 等,最核心的區別。

2、Git 把內容按元資料方式儲存,而 SVN 是按檔案:所有的資源控制系統都是把檔案的元資訊隱藏在一個類似 .svn、.cvs 等的資料夾裡。

3、Git 分支和 SVN 的分支不同:分支在 SVN 中一點都不特別,其實它就是版本庫中的另外一個目錄。

4、Git 沒有一個全域性的版本號,而 SVN 有:目前為止這是跟 SVN 相比 Git 缺少的最大的一個特徵。

5、Git 的內容完整性要優於 SVN:Git 的內容儲存使用的是 SHA-1 雜湊演算法。這能確保程式碼內容的完整性,確保在遇到磁碟故障和網路問題時降低對版本庫的破壞。

如何使用python程式碼操作git程式碼

python操作git

安裝模組

pip3 install gitpython

基本使用

import os
from git.repo import Repo
# 建立本地路徑用來存放遠端倉庫下載的程式碼
download_path = os.path.join('NB')
# 拉取程式碼
Repo.clone_from('https://github.com/DominicJi/TeachTest.git',to_path=download_path,branch='master')

其他常見操作

# ############## 2. pull最新程式碼 ##############
import os
from git.repo import Repo
local_path = os.path.join('NB')
repo = Repo(local_path)
repo.git.pull()
# ############## 3. 獲取所有分支 ##############
import os
from git.repo import Repo
local_path = os.path.join('NB')
repo = Repo(local_path)
branches = repo.remote().refs
for item in branches:
 print(item.remote_head)
# ############## 4. 獲取所有版本 ##############
import os
from git.repo import Repo
local_path = os.path.join('NB')
repo = Repo(local_path)
for tag in repo.tags:
 print(tag.name)
# ############## 5. 獲取所有commit ##############
import os
from git.repo import Repo
local_path = os.path.join('NB')
repo = Repo(local_path)
# 將所有提交記錄結果格式成json格式字串 方便後續反序列化操作
commit_log = repo.git.log('--pretty={"commit":"%h","author":"%an","summary":"%s","date":"%cd"}',max_count=50,date='format:%Y-%m-%d %H:%M')
log_list = commit_log.split("\n")
real_log_list = [eval(item) for item in log_list]
print(real_log_list)
# ############## 6. 切換分支 ##############
import os
from git.repo import Repo
local_path = os.path.join('NB')
repo = Repo(local_path)
before = repo.git.branch()
print(before)
repo.git.checkout('master')
after = repo.git.branch()
print(after)
repo.git.reset('--hard','854ead2e82dc73b634cbd5afcf1414f5b30e94a8')
# ############## 7. 打包程式碼 ##############
import os
from git.repo import Repo
local_path = os.path.join(NB')
repo = Repo(local_path)
with open(os.path.join('NB.tar'),'wb') as fp:
 repo.archive(fp)

將上述所有的方法封裝到類中以便後續的呼叫(後續如果你想要操作git直接拷貝使用即可)

import os
from git.repo import Repo
from git.repo.fun import is_git_dir
class GitRepository(object):
 """
 git倉庫管理
 """
 def __init__(self,local_path,repo_url,branch='master'):
  self.local_path = local_path
  self.repo_url = repo_url
  self.repo = None
  self.initial(repo_url,branch)
 def initial(self,branch):
  """
  初始化git倉庫
  :param repo_url:
  :param branch:
  :return:
  """
  if not os.path.exists(self.local_path):
   os.makedirs(self.local_path)

到此這篇關於如何使用python程式碼操作git程式碼的文章就介紹到這了,更多相關python 操作git內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!