0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

git分支應(yīng)用和多人協(xié)作

嵌入式技術(shù) ? 來(lái)源:嵌入式技術(shù) ? 作者:嵌入式技術(shù) ? 2022-09-19 09:00 ? 次閱讀

git分支應(yīng)用和多人協(xié)作

1.知識(shí)百科

Git(讀音為/g?t/)是一個(gè)開(kāi)源的分布式版本控制系統(tǒng),可以有效、高速地處理從很小到非常大的項(xiàng)目版本管理。 也是Linus Torvalds為了幫助管理Linux內(nèi)核開(kāi)發(fā)而開(kāi)發(fā)的一個(gè)開(kāi)放源碼的版本控制軟件。

git 包含了完善的客戶端和服務(wù)端,客戶端和服務(wù)端之間通過(guò)某種安全通信 協(xié)議(HTTPS 或者 SSH)進(jìn)行文件的上傳和下載。

git工具安裝和基本使用參考:https://blog.csdn.net/weixin_44453694/article/details/123999289

poYBAGMnL7CAYiZHAAE4W-Vdanw928.png#pic_center

2.git分支

分?就是科幻電影??的平?宇宙,當(dāng)你正在電腦前努?學(xué)習(xí)Git的時(shí)候,另?個(gè)你正在另?個(gè)平?宇宙?努?學(xué)習(xí)SVN。兩者之間可以同時(shí)執(zhí)行。

分?在實(shí)際中有什么?呢?假設(shè)你準(zhǔn)備開(kāi)發(fā)?個(gè)新功能,但是需要兩周才能完成,第?周你寫(xiě)了50%的代碼,如果?刻提交,由于代碼還沒(méi)寫(xiě)完,若直接提交則會(huì)導(dǎo)致代碼不完整影響其他人工作。但若等所有代碼寫(xiě)完再一次性提交,?存在丟失每天進(jìn)度的巨??險(xiǎn)。而有了分支的產(chǎn)生,就可以創(chuàng)建一個(gè)屬于自己的分支,只有自己才能看到分支內(nèi)容,別?看不到,還繼續(xù)在原來(lái)的分?上正常?作,?你在??的分?上干活,想提交就提交,直到開(kāi)發(fā)完畢后,再?次性合并到原來(lái)的分?上,這樣,既安全,又可以多人協(xié)作開(kāi)發(fā),互不影響。

在沒(méi)有分支之前,master分?是?條線,Git?master指向最新的提交,再?HEAD指向master,就能確定當(dāng)前分?,以及當(dāng)前分?的提交點(diǎn):

pYYBAGMnL7CAFdjSAABvcwBxRks621.png#pic_center

??每次提交,master分?都會(huì)向前移動(dòng)?步,這樣,隨著你不斷提交,master分?的線也越
來(lái)越?。
??當(dāng)我們創(chuàng)建新的分?,例如dev時(shí),git新建了?個(gè)指針叫dev,指向master相同的提交,再把HEAD指向dev,就表?當(dāng)前分?在dev上:

poYBAGMnL7CAE4YXAABpy-4XYGo047.png#pic_center

??當(dāng)有了dev分支,我們就可以通過(guò)改變HEAD指向來(lái)操作不同分支,當(dāng)HEAD指向dev分支時(shí)則只能操作dev。當(dāng)我們工作完成后,就可以將master和dev分支合并,即直接讓master指向dev提交分支。甚至可以直接刪除dev分支。

poYBAGMnL7CAK9gtAABZcnbz6k4656.png#pic_center

3.創(chuàng)建分支

$ git branch dev //創(chuàng)建分支
$ git checkout dev //切換分支
$ git branch  //查看分支
* dev  
  master
$ git branch -d dev //刪除分支
$ git checkout -b dev //創(chuàng)建一個(gè)分支dev,并切換到當(dāng)前分支下

??*表示當(dāng)前所處于的分支位置。

3.1 創(chuàng)建分支示例

$ touch 1.txt //創(chuàng)建新文件
$ git checkout -b dev  //創(chuàng)建dev分支并切換當(dāng)當(dāng)前分支下
$ git add 1.txt //添加1.txt
$ git commit -m "分支應(yīng)用實(shí)例"  //編寫(xiě)提交說(shuō)明
[dev 8873ebd] 分支應(yīng)用實(shí)例
 1 file changed, 1 insertion(+)
 create mode 100644 1.txt
$ git push origin dev  //提交到dev分支
pYYBAGMnL7GAGbbtAABt5V2raNE450.png#pic_centerpYYBAGMnL7GAT6Q9AAHNRwAYGXI750.png#pic_center

3.2 合并分支并提交

$ git checkout master //切換到主分支
$ git merge dev  -m "分支合并" //合并分支,將dev分支合并到主分支
更新 38d25e9..8873ebd
Fast-forward
 1.txt | 1 +
 1 file changed, 1 insertion(+)
 create mode 100644 1.txt
poYBAGMnL7GAHyJTAAGDRSX_vGU885.png#pic_center
$ git add -A
$ git push origin master //將合并內(nèi)容提交到主分支

??合并并且提交到主分支成功后則可刪除dev分支

$ git branch -d dev 
已刪除分支 dev(曾為 8873ebd)。

4.分支沖突問(wèn)題

4.1 創(chuàng)建dev分支并提交

$ git checkout -b dev  //創(chuàng)建分支并切換到dev分支下
$ vim 1.txt  //打開(kāi)1.txt 添加內(nèi)容
git 分支測(cè)試
git 分支沖突測(cè)試
$ git add 1.txt  //添加1.txt
$ git commit -m "分支沖突測(cè)試"  
$ git push origin dev  //提交到dev分支
pYYBAGMnL7GAcSFgAABv2dYHUnI463.png#pic_center

4.2 修改主分支并提交

$ git checkout master //切換到主分支
$ vim 1.txt //修改1.txt文件
git 分支測(cè)試
主分支測(cè)試
$ git add 1.txt 
$ git commit -m "主分支提交測(cè)試"
$ git push origin master  //修改內(nèi)容提交到主分支
poYBAGMnL7KAOZ7DAABj0uRXICs248.png#pic_center

4.3 合并分支

$ git merge dev -m "分支合并" //合并分支
自動(dòng)合并 1.txt
沖突(內(nèi)容):合并沖突于 1.txt
自動(dòng)合并失敗,修正沖突然后提交修正的結(jié)果。
$ git status  //查看狀態(tài)
位于分支 master
您的分支與上游分支 'origin/master' 一致。

您有尚未合并的路徑。
  (解決沖突并運(yùn)行 "git commit")
  (使用 "git merge --abort" 終止合并)

未合并的路徑:
  (使用 "git add <文件>..." 標(biāo)記解決方案)

	雙方修改:   1.txt

修改尚未加入提交(使用 "git add" 和/或 "git commit -a")

??打開(kāi)1.txt文件可查看到主分支和dev分支的修改內(nèi)容。

pYYBAGMnL7KAam6qAAC6M5d48SM158.png#pic_center

??由于主分支和dev分支都對(duì)1.txt文字做出修改,導(dǎo)致分支自動(dòng)合并失敗,此時(shí)就需要手動(dòng)解決分支沖突問(wèn)題。我們打開(kāi)1.txt文件就可以看到主分支和dev分支的修改狀況,我們需要手動(dòng)合并。

?當(dāng)我們?cè)诤喜⒎种r(shí),遇到自動(dòng)合并失敗,則可以通過(guò)git status 查看狀態(tài)信息,查看出現(xiàn)合并失敗的問(wèn)題文件,然后收合并分支,再次添加提交文件,編寫(xiě)提交說(shuō)明重新提交即可。
在實(shí)際開(kāi)發(fā)中,我們應(yīng)該按照?個(gè)基本原則進(jìn)?分?管理: ?先,master分?應(yīng)該是?常穩(wěn)定的,也就是僅?來(lái)發(fā)布新版本,平時(shí)不能在上?干活; 那在哪干活呢?干活都在dev分?上,也就是說(shuō),dev分?是不穩(wěn)定的,到某個(gè)時(shí)候,?如 1.0版本發(fā)布時(shí),再把dev分?合并到master上,在master分?發(fā)布1.0版本; 你和你的?伙伴們每個(gè)?都在dev分?上干活,每個(gè)?都有??的分?,時(shí)不時(shí)地往dev分 ?上合并就可以了。
所以,團(tuán)隊(duì)合作的分?看起來(lái)就像這樣:

pYYBAGMnL7KAWILyAADcZJ_N19Y807.png#pic_center

5.多人協(xié)作

??Git是一個(gè)開(kāi)源的分布式版本控制系統(tǒng),可以有效的完成版本管理和多人協(xié)作開(kāi)發(fā)。要實(shí)現(xiàn)多人協(xié)作則需要在服務(wù)器端添加協(xié)作人員。
??在倉(cāng)庫(kù)管理中可以添加開(kāi)發(fā)者人員,設(shè)置代碼審核人員和分支合并審核。

poYBAGMnL7KABzczAAEtGyXvC8E218.png#pic_center

審核編輯:湯梓紅
聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 控制系統(tǒng)
    +關(guān)注

    關(guān)注

    41

    文章

    6420

    瀏覽量

    110104
  • 開(kāi)源
    +關(guān)注

    關(guān)注

    3

    文章

    3126

    瀏覽量

    42070
  • Git
    Git
    +關(guān)注

    關(guān)注

    0

    文章

    195

    瀏覽量

    15688
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    關(guān)于git的遠(yuǎn)程分支的詳細(xì)介紹

    不知道大家有沒(méi)有經(jīng)歷過(guò),當(dāng)我們切換到了一個(gè)新的分支想要提交代碼的時(shí)候,總會(huì)遇到這樣的錯(cuò)誤。 我們把日志里的英文翻譯過(guò)來(lái)是說(shuō),我們當(dāng)前的分支沒(méi)有設(shè)置任何上游分支。然后git提示我們可以運(yùn)
    的頭像 發(fā)表于 10-11 10:03 ?3135次閱讀
    關(guān)于<b class='flag-5'>git</b>的遠(yuǎn)程<b class='flag-5'>分支</b>的詳細(xì)介紹

    Git命令之本地分支與遠(yuǎn)程分支關(guān)聯(lián)和解除

    在實(shí)際的工作生活中,往往需要將本地的分支和遠(yuǎn)程分支關(guān)聯(lián),這樣我們就可以使用git pull命令來(lái)更新拉取最新的代碼,并使用git push命令將自己本地的修改推送到遠(yuǎn)程倉(cāng)庫(kù)。但是如果此
    的頭像 發(fā)表于 12-15 09:27 ?2190次閱讀
    <b class='flag-5'>Git</b>命令之本地<b class='flag-5'>分支</b>與遠(yuǎn)程<b class='flag-5'>分支</b>關(guān)聯(lián)和解除

    【AD系列教程】多人PCB協(xié)作設(shè)計(jì)

    一、 前言在使用Altium Designer進(jìn)行PCB工程繪制時(shí),大家都希望可以多人協(xié)作對(duì)一個(gè)PCB工程進(jìn)行設(shè)計(jì)與檢查。 以往大家的做法往往是將整個(gè)PCB工程文件復(fù)制給別人,讓別人在自己的電腦上進(jìn)
    發(fā)表于 12-05 15:15

    git簡(jiǎn)單使用(一)

    倉(cāng)庫(kù),以及如何進(jìn)行分支控制:1.創(chuàng)建一個(gè)文件夾mkdir git-study2.初始化倉(cāng)庫(kù)git init3.查看下當(dāng)前分支git bran
    發(fā)表于 02-17 16:18

    AD多人協(xié)作pcb設(shè)計(jì)

    AD10多人協(xié)作參數(shù)設(shè)置過(guò)程詳解
    發(fā)表于 08-28 09:23

    Git分支,為何以及如何使用分支

    file.txt 之間的三個(gè)方塊展示每個(gè)分支所在的位置(或者說(shuō)每個(gè)分支中的最后一次提交的位置)。由于 myBranch 剛創(chuàng)建,提交狀態(tài)與 master 分支及其對(duì)應(yīng)的記為 remotes/origin
    的頭像 發(fā)表于 06-11 11:08 ?3895次閱讀

    Git Flow應(yīng)該拋棄的原因

    Git-flow 是一種分支和合并方法。十年前,因?yàn)橐黄麨椤敢粋€(gè)成功的 Git 分支模型」的文章,Git-flow 變得廣為人知。
    的頭像 發(fā)表于 03-21 13:41 ?1428次閱讀
    <b class='flag-5'>Git</b> Flow應(yīng)該拋棄的原因

    Git最佳實(shí)踐,什么才是最佳工作流

    知道相比于 Svn,Git 最牛的地方在于它的分支,分支很靈活,但是如果缺乏一個(gè)使用套路,又會(huì)用的亂糟糟的,特別是在團(tuán)隊(duì)協(xié)作中,該怎么玩 Git
    的頭像 發(fā)表于 02-21 17:59 ?1434次閱讀

    利用Learn Git Branching輕松學(xué)習(xí)Git

    托管網(wǎng)站,與他人協(xié)作管理推進(jìn)開(kāi)源項(xiàng)目必須要掌握的工具。 而Git中的常用操作,雖然上手難度低,但涉及到細(xì)節(jié)處尤其是多分支操作,難免會(huì)讓很多新手犯糊涂,今天我就給大家推薦一個(gè)開(kāi)源項(xiàng)目,幫助使用者在輕松游戲的過(guò)程中熟練掌握
    的頭像 發(fā)表于 09-15 14:53 ?1436次閱讀

    Git / GitHub 是什么?有什么用?

    分支Git 里很重要的概念,大家可以使用 Learning Git Branching 這個(gè)在線游戲來(lái)學(xué)習(xí)和理解分支。
    發(fā)表于 12-09 09:39 ?838次閱讀

    如何設(shè)置Git的SSH秘鑰

    現(xiàn)在使用Git工具的人是越來(lái)越多了,許多的公司或組織都使用了Git進(jìn)行代碼的保存、項(xiàng)目管理、多人協(xié)作開(kāi)發(fā)等,應(yīng)用的也是越發(fā)的廣泛了。我個(gè)人的使用感覺(jué)來(lái)看,以前也是用SVN進(jìn)行代碼托管,
    的頭像 發(fā)表于 02-10 11:30 ?1784次閱讀
    如何設(shè)置<b class='flag-5'>Git</b>的SSH秘鑰

    Git分支管理

    在項(xiàng)目的開(kāi)發(fā)過(guò)程中,很多時(shí)候都會(huì)使用Git托管工具進(jìn)行項(xiàng)目文件或者代碼的管理,方便團(tuán)隊(duì)成員之間的協(xié)作開(kāi)發(fā)。使用Git進(jìn)行項(xiàng)目管理目前也是越來(lái)越受到歡迎,除了Git還有很多的其他項(xiàng)目管理
    的頭像 發(fā)表于 02-20 14:49 ?913次閱讀
    <b class='flag-5'>Git</b>的<b class='flag-5'>分支</b>管理

    git rebase與相關(guān)git merge命令比較

    。 #概念 ????首先要理解的是git rebase和git merge解決了同樣的問(wèn)題。這兩個(gè)命令都旨在將更改從一個(gè)分支集成到另一個(gè)分支 - 它們只是以不同的方式進(jìn)行。試想一下當(dāng)你
    的頭像 發(fā)表于 05-26 16:22 ?725次閱讀
    <b class='flag-5'>git</b> rebase與相關(guān)<b class='flag-5'>git</b> merge命令比較

    git rebase和git merge的區(qū)別

    ? 解決沖突 git rebase和git merge的區(qū)別 分支合并 git merge是用來(lái)合并兩個(gè)分支的。 比如:將 b
    的頭像 發(fā)表于 07-05 09:54 ?545次閱讀
    <b class='flag-5'>git</b> rebase和<b class='flag-5'>git</b> merge的區(qū)別

    git切換遠(yuǎn)程地址分支方式

    git remote set-url origin URL】 更換遠(yuǎn)程倉(cāng)庫(kù)地址,URL為新地址。
    的頭像 發(fā)表于 12-18 09:35 ?1772次閱讀