最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

如何使用python代碼操作git代碼

 更新時(shí)間:2020年02月29日 16:56:24   作者:tomjoy  
Git 是一個(gè)開(kāi)源的分布式版本控制系統(tǒng),用于敏捷高效地處理任何或小或大的項(xiàng)目。本文通過(guò)實(shí)例代碼給大家介紹如何使用python代碼操作git,感興趣的朋友一起看看吧

git簡(jiǎn)介

Git 是一個(gè)開(kāi)源的分布式版本控制系統(tǒng),用于敏捷高效地處理任何或小或大的項(xiàng)目。

Git 是 Linus Torvalds 為了幫助管理 Linux 內(nèi)核開(kāi)發(fā)而開(kāi)發(fā)的一個(gè)開(kāi)放源碼的版本控制軟件。

Git 與常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本庫(kù)的方式,不必服務(wù)器端軟件支持。

Git 與 SVN 區(qū)別

Git 不僅僅是個(gè)版本控制系統(tǒng),它也是個(gè)內(nèi)容管理系統(tǒng)(CMS),工作管理系統(tǒng)等。

如果你是一個(gè)具有使用 SVN 背景的人,你需要做一定的思想轉(zhuǎn)換,來(lái)適應(yīng) Git 提供的一些概念和特征。

Git 與 SVN 區(qū)別點(diǎn):

1、Git 是分布式的,SVN 不是:這是 Git 和其它非分布式的版本控制系統(tǒng),例如 SVN,CVS 等,最核心的區(qū)別。

2、Git 把內(nèi)容按元數(shù)據(jù)方式存儲(chǔ),而 SVN 是按文件:所有的資源控制系統(tǒng)都是把文件的元信息隱藏在一個(gè)類(lèi)似 .svn、.cvs 等的文件夾里。

3、Git 分支和 SVN 的分支不同:分支在 SVN 中一點(diǎn)都不特別,其實(shí)它就是版本庫(kù)中的另外一個(gè)目錄。

4、Git 沒(méi)有一個(gè)全局的版本號(hào),而 SVN 有:目前為止這是跟 SVN 相比 Git 缺少的最大的一個(gè)特征。

5、Git 的內(nèi)容完整性要優(yōu)于 SVN:Git 的內(nèi)容存儲(chǔ)使用的是 SHA-1 哈希算法。這能確保代碼內(nèi)容的完整性,確保在遇到磁盤(pán)故障和網(wǎng)絡(luò)問(wèn)題時(shí)降低對(duì)版本庫(kù)的破壞。

python操作git

安裝模塊

pip3 install gitpython

基本使用

import os
from git.repo import Repo
# 創(chuàng)建本地路徑用來(lái)存放遠(yuǎn)程倉(cāng)庫(kù)下載的代碼
download_path = os.path.join('NB')
# 拉取代碼
Repo.clone_from('https://github.com/DominicJi/TeachTest.git',to_path=download_path,branch='master')

其他常見(jiàn)操作

# ############## 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)
# 將所有提交記錄結(jié)果格式成json格式字符串 方便后續(xù)反序列化操作
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)

將上述所有的方法封裝到類(lèi)中以便后續(xù)的調(diào)用(后續(xù)如果你想要操作git直接拷貝使用即可)

import os
from git.repo import Repo
from git.repo.fun import is_git_dir
class GitRepository(object):
 """
 git倉(cāng)庫(kù)管理
 """
 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倉(cāng)庫(kù)
  :param repo_url:
  :param branch:
  :return:
  """
  if not os.path.exists(self.local_path):
   os.makedirs(self.local_path)

到此這篇關(guān)于如何使用python代碼操作git代碼的文章就介紹到這了,更多相關(guān)python 操作git內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python中數(shù)據(jù)類(lèi)轉(zhuǎn)換為JSON的方法詳解

    Python中數(shù)據(jù)類(lèi)轉(zhuǎn)換為JSON的方法詳解

    這篇文章主要介紹了Python中數(shù)據(jù)類(lèi)轉(zhuǎn)換為JSON的方法詳解的相關(guān)資料,需要的朋友可以參考下
    2023-09-09
  • Python自動(dòng)化辦公之合并多個(gè)Excel

    Python自動(dòng)化辦公之合并多個(gè)Excel

    在日常的辦公自動(dòng)化工作中,尤其是處理大量數(shù)據(jù)時(shí),合并多個(gè)?Excel?表格是一個(gè)常見(jiàn)且繁瑣的任務(wù),下面小編就來(lái)為大家介紹一下如何使用Python輕松實(shí)現(xiàn)合并多個(gè)Excel吧
    2025-02-02
  • PHP網(wǎng)頁(yè)抓取之抓取百度貼吧郵箱數(shù)據(jù)代碼分享

    PHP網(wǎng)頁(yè)抓取之抓取百度貼吧郵箱數(shù)據(jù)代碼分享

    本文給大家介紹PHP網(wǎng)頁(yè)抓取之抓取百度貼吧郵箱數(shù)據(jù)代碼分享,程序?qū)崿F(xiàn)了一鍵抓取帖子全部郵箱和分頁(yè)抓取郵箱兩個(gè)功能,感興趣的朋友一起學(xué)習(xí)吧
    2016-04-04
  • Linux下Python安裝完成后使用pip命令的詳細(xì)教程

    Linux下Python安裝完成后使用pip命令的詳細(xì)教程

    這篇文章主要介紹了Linux下Python安裝完成后使用pip命令的詳細(xì)教程,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-11-11
  • 詳解Python sys.argv使用方法

    詳解Python sys.argv使用方法

    在本文中我們給大家詳細(xì)講解了關(guān)于Python sys.argv使用方法以及注意事項(xiàng),有此需要的讀者們跟著學(xué)習(xí)下。
    2019-05-05
  • Pytorch之finetune使用詳解

    Pytorch之finetune使用詳解

    今天小編就為大家分享一篇Pytorch之finetune使用詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-01-01
  • Python tkinter界面實(shí)現(xiàn)歷史天氣查詢(xún)的示例代碼

    Python tkinter界面實(shí)現(xiàn)歷史天氣查詢(xún)的示例代碼

    這篇文章主要介紹了Python tkinter界面實(shí)現(xiàn)歷史天氣查詢(xún)的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • 分割python多空格字符串的兩種方法小結(jié)

    分割python多空格字符串的兩種方法小結(jié)

    這篇文章主要介紹了分割python多空格字符串的兩種方法小結(jié),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • Python實(shí)現(xiàn)批量提取Word文檔表格數(shù)據(jù)

    Python實(shí)現(xiàn)批量提取Word文檔表格數(shù)據(jù)

    在大數(shù)據(jù)處理與信息抽取領(lǐng)域中,Word文檔是各類(lèi)機(jī)構(gòu)和個(gè)人普遍采用的一種信息存儲(chǔ)格式,本文將介紹如何使用Python實(shí)現(xiàn)對(duì)Word文檔中表格的提取,感興趣的可以了解下
    2024-03-03
  • OpenCV基于ORB算法實(shí)現(xiàn)角點(diǎn)檢測(cè)

    OpenCV基于ORB算法實(shí)現(xiàn)角點(diǎn)檢測(cè)

    這篇文章主要為大家詳細(xì)介紹了OpenCV基于ORB算法實(shí)現(xiàn)角點(diǎn)檢測(cè),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-08-08

最新評(píng)論

宝山区| 克拉玛依市| 赤壁市| 葫芦岛市| 桂林市| 永丰县| 栖霞市| 宜宾市| 尉犁县| 宣威市| 阳信县| 通渭县| 和平区| 中牟县| 客服| 广元市| 舞钢市| 东光县| 阳谷县| 平安县| 澄迈县| 化德县| 大洼县| 辉县市| 安阳市| 贡嘎县| 洛隆县| 陇南市| 酉阳| 林口县| 临朐县| 红原县| 丰台区| 凉山| 九龙城区| 睢宁县| 克什克腾旗| 盐津县| 云阳县| 嘉黎县| 宿州市|