欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Git工作流模式及命令的使用講解

 更新時(shí)間:2022年04月22日 17:16:21   作者:shengzhu1  
這篇文章主要為大家介紹了Git的工作流模式及命令的使用講解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

Git的工作方式

分為集中式工作流、功能分支工作流、Gitflow工作流和Forking,其中集中式工作流和功能分支工作流是已經(jīng)使用過(guò)的,Gitflow和Forking兩種工作流暫時(shí)沒(méi)有使用過(guò)。

集中式工作流

一個(gè)遠(yuǎn)程倉(cāng)庫(kù),一個(gè)主分支master,團(tuán)隊(duì)每個(gè)成員都有一個(gè)本地倉(cāng)庫(kù),在本地倉(cāng)庫(kù)中進(jìn)行代碼的編輯、暫存和提交工作:

git add <some file> 或 git add .>
//`some file`代表要暫存的文件,`.`代表工作目錄下的所有文件
gie commit -m "一些描述"
//提交文,描述指的是本次提交修改了什么功能或者修改了什么bug,方便以后的查看
git push -u origin master
//-u選項(xiàng)設(shè)置本地分支去跟蹤遠(yuǎn)程對(duì)應(yīng)的分支。設(shè)置好跟蹤的分支后,就可以使用git push命令省去指定推送分支的參數(shù)
//發(fā)布本地倉(cāng)庫(kù)到遠(yuǎn)程的中央倉(cāng)庫(kù)中,origin是遠(yuǎn)程倉(cāng)庫(kù)名,master是參數(shù)告訴Git的分支,master代表主分支,當(dāng)然分支可以不是主分支

注意:在一種情況下push命令會(huì)出錯(cuò),即如果小明第一次發(fā)布代碼到遠(yuǎn)程倉(cāng)庫(kù),此時(shí)小紅在 本地開發(fā)自己的功能,那么在小紅push自己的本地庫(kù)到遠(yuǎn)程的時(shí)候會(huì)報(bào)錯(cuò),原因是小紅的本地庫(kù)和遠(yuǎn)程庫(kù)有分歧,需要先pull遠(yuǎn)程庫(kù)到本地,與本地庫(kù)合并之后再push到遠(yuǎn)程庫(kù)。

功能分支工作流

在集中式工作流的基礎(chǔ)上,為各個(gè)新功能分配一個(gè)專門的分支來(lái)開發(fā),即在master主分支外在創(chuàng)建一個(gè)分支,程序員開發(fā)的新功能全部push到此分支上,等到功能成熟的時(shí)候再把此分支合并到主分支master上

git checkout -b newbranch master
//checkout代表創(chuàng)建切換帶新分支newbranch
//-b代表如果新分支不存在則會(huì)創(chuàng)建一個(gè)新分支
//最后的master代表新分支是基于主分支創(chuàng)建的

新分支創(chuàng)建之后,對(duì)其的編輯、暫存和提交工作與之前一樣,對(duì)其push的命令變?yōu)?/p>

git push origin newbranch

等到新功能完善之后,通過(guò)以下命令:

git checkout mastergit pullgit pull origin newbranchgit push

首先git checkout master切換到主分支,然后執(zhí)行g(shù)it pull把本地倉(cāng)庫(kù)的主分支上傳到遠(yuǎn)程庫(kù),再執(zhí)行g(shù)it pull origin newbranch保證合并newbranch分支和已經(jīng)和遠(yuǎn)程一致的本地master分支,你可以使用簡(jiǎn)單git merge newbranch命令,但前面的命令可以保證總是最新的新功能分支。 最后把更新的master分支重新push到遠(yuǎn)程庫(kù)。

Gitflow工作流

Gitflow工作流沒(méi)有用超出功能分支工作流的概念和命令,而是為不同的分支分配一個(gè)很明確的角色,并定義分支之間如何和什么時(shí)候進(jìn)行交互。
除了有master主分支(用于存儲(chǔ)正式發(fā)布的歷史)外,還有一個(gè)作為功能集成分支的develop分支。當(dāng)初始化完成后,某個(gè)程序員想要開發(fā)一個(gè)性能,并不是直接從master分支上拉出新分支,而是使用develop分支作為父分支,當(dāng)新功能完成后,再合并會(huì)父分支,新功能的提交并不與master分支直接交互。


一旦develop分支上有了做一次發(fā)布(或者說(shuō)快到了既定的發(fā)布日)的足夠功能,就從develop分支上checkout一個(gè)發(fā)布分支。 新建的分支用于開始發(fā)布循環(huán),所以從這個(gè)時(shí)間點(diǎn)開始之后新的功能不能再加到這個(gè)分支上—— 這個(gè)分支只應(yīng)該做Bug修復(fù)、文檔生成和其它面向發(fā)布任務(wù)。 一旦對(duì)外發(fā)布的工作都完成了,發(fā)布分支合并到master分支并分配一個(gè)版本號(hào)打好Tag。 另外,這些從新建發(fā)布分支以來(lái)的做的修改要合并回develop分支。

維護(hù)分支

維護(hù)分支或說(shuō)是熱修復(fù)(hotfix)分支用于生成快速給產(chǎn)品發(fā)布版本(production releases)打補(bǔ)丁,這是唯一可以直接從master分支fork出來(lái)的分支。 修復(fù)完成,修改應(yīng)該馬上合并回master分支和develop分支(當(dāng)前的發(fā)布分支),master分支應(yīng)該用新的版本號(hào)打好Tag。
為Bug修復(fù)使用專門分支,讓團(tuán)隊(duì)可以處理掉問(wèn)題而不用打斷其它工作或是等待下一個(gè)發(fā)布循環(huán)。 你可以把維護(hù)分支想成是一個(gè)直接在master分支上處理的臨時(shí)發(fā)布。

工作流程

為master分支配套一個(gè)develop分支

git branch develop
git push -u origin develop

以后這個(gè)分支將會(huì)包含了項(xiàng)目的全部歷史,而master分支將只包含了部分歷史。其它開發(fā)者這時(shí)應(yīng)該克隆中央倉(cāng)庫(kù),建好develop分支的跟蹤分支:

git clone ssh://user@host/path/to/repo.git
git checkout -b develop origin/develop

現(xiàn)在每個(gè)開發(fā)都有了這些歷史分支的本地拷貝。
小紅和小明開團(tuán)隊(duì)成員始各自的功能開發(fā)。他們需要為各自的功能創(chuàng)建相應(yīng)的分支。新分支不是基于master分支,而是應(yīng)該基于develop分支:

git checkout -b some-feature develop

他們用老套路添加提交到各自功能分支上:編輯、暫存、提交:

git status
git add <some-file>
git commit

添加了提交后,功能OK了之后,如果團(tuán)隊(duì)使用Pull Requests,這時(shí)候可以發(fā)起一個(gè)用于合并到develop分支。 否則她可以直接合并到她本地的develop分支后push到中央倉(cāng)庫(kù):

git pull origin develop
git checkout develop
git merge some-feature
git push
git branch -d some-feature

第一條命令在合并功能前確保develop分支是最新的。注意,功能決不應(yīng)該直接合并到master分支。 沖突解決方法和集中式工作流一樣。

Forking工作流

分布式工作流,充分利用了Git在分支和克隆上的優(yōu)勢(shì),既可以管理大團(tuán)隊(duì)的開發(fā)者(developer)和接受不信任貢獻(xiàn)者(contributor)的提交。這種工作流使得每個(gè)開發(fā)者都有一個(gè)服務(wù)端倉(cāng)庫(kù)(此倉(cāng)庫(kù)只有自己可以push,但是所有人都可以pull修改),每個(gè)程序員都push代碼到自己的服務(wù)端倉(cāng)庫(kù),但不能push到正式倉(cāng)庫(kù),只有項(xiàng)目維護(hù)者才能push到正式倉(cāng)庫(kù),這樣項(xiàng)目維護(hù)者可以接受任何開發(fā)者的提交,但無(wú)需給他正式代碼庫(kù)的寫權(quán)限。
這種工作流適合網(wǎng)上開源社區(qū)的開源項(xiàng)目,大家統(tǒng)一對(duì)項(xiàng)目做貢獻(xiàn),但是有一個(gè)人或一個(gè)團(tuán)隊(duì)作為開發(fā)者來(lái)管理項(xiàng)目,所有的貢獻(xiàn)者的代碼由開發(fā)者審核,其功能完善之后再由開發(fā)者push到正式倉(cāng)庫(kù)中。

Pull Request

Pull Request是一個(gè)為討論提交功能的專門論壇,是一個(gè)友好的web界面(在個(gè)人github項(xiàng)目中也有這樣一個(gè)選項(xiàng)),大家在其中做一些Code Review的工作,把結(jié)果反饋到Pull Request中,還可以在其中push新的提交微調(diào)功能,等到討論結(jié)束后醒目維護(hù)者合并所有的功能到官方倉(cāng)庫(kù)中,關(guān)閉Pull Request。

發(fā)起一個(gè)Pull Request&#xff0c;就是要請(qǐng)求另一個(gè)開發(fā)者來(lái)pull自己倉(cāng)庫(kù)的一個(gè)分支到它的倉(cāng)庫(kù)中,因此需要提供四個(gè)信息:源倉(cāng)庫(kù)、源分支、目的倉(cāng)庫(kù)、目的分支。

Pull Request可以用于上述除了集中式工作流的其他三種工作流,因?yàn)槠湟笠捶种Р煌磦}(cāng)庫(kù)不同,而集中式工作流只有一個(gè)倉(cāng)庫(kù),一個(gè)master分支。

例:

在功能分支工作流中使用Pull Request

功能分支工作流只有一個(gè)公開的倉(cāng)庫(kù),所以Pull Request的目的倉(cāng)庫(kù)和源倉(cāng)庫(kù)總是同一個(gè)。 通常開發(fā)者會(huì)指定他的功能分支作為源分支,master分支作為目的分支。

收到Pull Request后,項(xiàng)目維護(hù)者要決定如何做。如果功能沒(méi)問(wèn)題,就簡(jiǎn)單地合并到master分支,關(guān)閉Pull Request。但如果提交的變更有問(wèn)題,他可以在Pull Request中反饋。之后新加的提交也會(huì)評(píng)論之后接著顯示出來(lái)。

在功能還沒(méi)有完全開發(fā)完的時(shí)候,也可能發(fā)起一個(gè)Pull Request。 比如開發(fā)者在實(shí)現(xiàn)某個(gè)需求時(shí)碰到了麻煩,他可以發(fā)一個(gè)包含正在進(jìn)行中工作的Pull Request。 其它的開發(fā)者可以在Pull Request提供建議,或者甚至直接添加提交來(lái)解決問(wèn)題。

參考:http://shouce.jb51.net/gitbook/Distributed-Git/Distributed-Workflows.html

以上就是Git工作流模式及命令的使用講解的詳細(xì)內(nèi)容,更多關(guān)于Git的工作流模式命令使用的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 編程趣事:當(dāng)下流行編程語(yǔ)言的”討厭”程度排行榜

    編程趣事:當(dāng)下流行編程語(yǔ)言的”討厭”程度排行榜

    這篇文章主要介紹了編程趣事:當(dāng)下流行編程語(yǔ)言的”討厭”程度排行榜,和小編的感覺(jué)一樣,需要的朋友可以參考下
    2014-07-07
  • 神兵利器系列之nessus8.8安裝破解使用教程

    神兵利器系列之nessus8.8安裝破解使用教程

    Nessus?是全世界最多人使用的系統(tǒng)漏洞掃描與分析工具。總共有超過(guò)75,000個(gè)機(jī)構(gòu)使用Nessus?作為掃描該機(jī)構(gòu)電腦系統(tǒng)。本文給大家分享神兵利器系列之nessus8.8安裝破解使用教程,感興趣的朋友一起看看吧
    2022-01-01
  • 基于ChatGPT使用AI實(shí)現(xiàn)自然對(duì)話的原理分析

    基于ChatGPT使用AI實(shí)現(xiàn)自然對(duì)話的原理分析

    ChatGPT是當(dāng)前自然語(yǔ)言處理領(lǐng)域的重要進(jìn)展之一,可以生成高質(zhì)量的文本,可應(yīng)用于多種場(chǎng)景,如智能客服、聊天機(jī)器人、語(yǔ)音助手等。本文將詳細(xì)介紹ChatGPT的原理、實(shí)戰(zhàn)演練和流程圖,幫助讀者更好地理解ChatGPT技術(shù)的應(yīng)用和優(yōu)勢(shì)
    2023-05-05
  • 微信小程序(微信應(yīng)用號(hào))開發(fā)工具0.9版安裝詳細(xì)教程

    微信小程序(微信應(yīng)用號(hào))開發(fā)工具0.9版安裝詳細(xì)教程

    這篇文章主要介紹了微信小程序(微信應(yīng)用號(hào))開發(fā)工具0.9版安裝詳細(xì)教程的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-09-09
  • 圖像檢索之IF-IDF,RootSift,VLAD

    圖像檢索之IF-IDF,RootSift,VLAD

    TF-IDF是一種用于信息檢索的常用加權(quán)技術(shù),在文本檢索中,用以評(píng)估詞語(yǔ)對(duì)于一個(gè)文件數(shù)據(jù)庫(kù)中的其中一份文件的重要程度,本文給大家介紹下圖像檢索之IF-IDF,RootSift,VLAD的相關(guān)知識(shí),感興趣的朋友一起看看吧
    2021-12-12
  • 開發(fā)人員一定要加入收藏夾的網(wǎng)站 推薦

    開發(fā)人員一定要加入收藏夾的網(wǎng)站 推薦

    開發(fā)人員一定要加入收藏夾的網(wǎng)站,比較不錯(cuò)。大家可以參考一下。
    2009-11-11
  • Delphi - Indy idMessage和idSMTP實(shí)現(xiàn)郵件的發(fā)送

    Delphi - Indy idMessage和idSMTP實(shí)現(xiàn)郵件的發(fā)送

    這篇文章主要介紹了Delphi - Indy idMessage和idSMTP實(shí)現(xiàn)郵件的發(fā)送,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-08-08
  • 自動(dòng)駕駛網(wǎng)絡(luò)到底是什么

    自動(dòng)駕駛網(wǎng)絡(luò)到底是什么

    自動(dòng)駕駛網(wǎng)絡(luò)(Self-Driving Network)是一種可預(yù)測(cè)并具有自主運(yùn)行能力的網(wǎng)絡(luò)。簡(jiǎn)單理解華為還是做IT基礎(chǔ)設(shè)施的網(wǎng)絡(luò)產(chǎn)品,只不過(guò)就是“網(wǎng)絡(luò)”的自動(dòng)駕駛。那網(wǎng)絡(luò)的自動(dòng)駕駛是什么?這個(gè)問(wèn)題,每個(gè)人都有自己的理解,接下來(lái)我將來(lái)回答一下這個(gè)問(wèn)題。
    2021-05-05
  • 解析jetbrains IDE的插件加載不出來(lái)的問(wèn)題(IDEA、pycharm等)

    解析jetbrains IDE的插件加載不出來(lái)的問(wèn)題(IDEA、pycharm等)

    這篇文章主要介紹了解析jetbrains IDE的插件加載不出來(lái)(IDEA、pycharm等),本文給大家分享解決方案,對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-10-10
  • 比較經(jīng)典技術(shù)普及帖 以你剛才在淘寶上買了一件東西

    比較經(jīng)典技術(shù)普及帖 以你剛才在淘寶上買了一件東西

    你發(fā)現(xiàn)快要過(guò)年了,于是想給你的女朋友買一件毛衣,你打開了taobao。這時(shí)你的瀏覽器首先查詢DNS服務(wù)器,將taobao轉(zhuǎn)換成ip地址
    2012-06-06

最新評(píng)論