您好,登錄后才能下訂單哦!
Git 是一個開源的分布式版本控制系統,用于敏捷高效地處理任何或小或大的項目。
Git 是 Linus Torvalds 為了幫助管理 Linux 內核開發而開發的一個開放源碼的版本控制軟件。
Git 與常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本庫的方式,不必服務器端軟件支持。
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 哈希算法。這能確保代碼內容的完整性,確保在遇到磁盤故障和網絡問題時降低對版本庫的破壞。
安裝模塊
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, repo_url, 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內容請搜索億速云以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持億速云!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。