git分支應(yīng)用和多人協(xié)作
1.知識百科
Git(讀音為/g?t/)是一個開源的分布式版本控制系統(tǒng),可以有效、高速地處理從很小到非常大的項(xiàng)目版本管理。 也是Linus Torvalds為了幫助管理Linux內(nèi)核開發(fā)而開發(fā)的一個開放源碼的版本控制軟件。
git 包含了完善的客戶端和服務(wù)端,客戶端和服務(wù)端之間通過某種安全通信 協(xié)議(HTTPS 或者 SSH)進(jìn)行文件的上傳和下載。
git工具安裝和基本使用參考:https://blog.csdn.net/weixin_44453694/article/details/123999289
![poYBAGMnL7CAYiZHAAE4W-Vdanw928.png#pic_center](https://file.elecfans.com//web2/M00/6A/95/poYBAGMnL7CAYiZHAAE4W-Vdanw928.png#pic_center)
2.git分支
分?就是科幻電影??的平?宇宙,當(dāng)你正在電腦前努?學(xué)習(xí)Git的時候,另?個你正在另?個平?宇宙?努?學(xué)習(xí)SVN。兩者之間可以同時執(zhí)行。
分?在實(shí)際中有什么?呢?假設(shè)你準(zhǔn)備開發(fā)?個新功能,但是需要兩周才能完成,第?周你寫了50%的代碼,如果?刻提交,由于代碼還沒寫完,若直接提交則會導(dǎo)致代碼不完整影響其他人工作。但若等所有代碼寫完再一次性提交,?存在丟失每天進(jìn)度的巨??險(xiǎn)。而有了分支的產(chǎn)生,就可以創(chuàng)建一個屬于自己的分支,只有自己才能看到分支內(nèi)容,別?看不到,還繼續(xù)在原來的分?上正常?作,?你在??的分?上干活,想提交就提交,直到開發(fā)完畢后,再?次性合并到原來的分?上,這樣,既安全,又可以多人協(xié)作開發(fā),互不影響。
在沒有分支之前,master分?是?條線,Git?master指向最新的提交,再?HEAD指向master,就能確定當(dāng)前分?,以及當(dāng)前分?的提交點(diǎn):
![pYYBAGMnL7CAFdjSAABvcwBxRks621.png#pic_center](https://file.elecfans.com//web2/M00/6B/2C/pYYBAGMnL7CAFdjSAABvcwBxRks621.png#pic_center)
??每次提交,master分?都會向前移動?步,這樣,隨著你不斷提交,master分?的線也越
來越?。
??當(dāng)我們創(chuàng)建新的分?,例如dev時,git新建了?個指針叫dev,指向master相同的提交,再把HEAD指向dev,就表?當(dāng)前分?在dev上:
![poYBAGMnL7CAE4YXAABpy-4XYGo047.png#pic_center](https://file.elecfans.com//web2/M00/6A/95/poYBAGMnL7CAE4YXAABpy-4XYGo047.png#pic_center)
??當(dāng)有了dev分支,我們就可以通過改變HEAD指向來操作不同分支,當(dāng)HEAD指向dev分支時則只能操作dev。當(dāng)我們工作完成后,就可以將master和dev分支合并,即直接讓master指向dev提交分支。甚至可以直接刪除dev分支。
![poYBAGMnL7CAK9gtAABZcnbz6k4656.png#pic_center](https://file.elecfans.com//web2/M00/6A/95/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)建一個分支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í)例" //編寫提交說明
[dev 8873ebd] 分支應(yīng)用實(shí)例
1 file changed, 1 insertion(+)
create mode 100644 1.txt
$ git push origin dev //提交到dev分支
![pYYBAGMnL7GAGbbtAABt5V2raNE450.png#pic_center](https://file.elecfans.com//web2/M00/6B/2C/pYYBAGMnL7GAGbbtAABt5V2raNE450.png#pic_center)
![pYYBAGMnL7GAT6Q9AAHNRwAYGXI750.png#pic_center](https://file.elecfans.com//web2/M00/6B/2C/pYYBAGMnL7GAT6Q9AAHNRwAYGXI750.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](https://file.elecfans.com//web2/M00/6A/95/poYBAGMnL7GAHyJTAAGDRSX_vGU885.png#pic_center)
$ git add -A
$ git push origin master //將合并內(nèi)容提交到主分支
??合并并且提交到主分支成功后則可刪除dev分支
$ git branch -d dev
已刪除分支 dev(曾為 8873ebd)。
4.分支沖突問題
4.1 創(chuàng)建dev分支并提交
$ git checkout -b dev //創(chuàng)建分支并切換到dev分支下
$ vim 1.txt //打開1.txt 添加內(nèi)容
git 分支測試
git 分支沖突測試
$ git add 1.txt //添加1.txt
$ git commit -m "分支沖突測試"
$ git push origin dev //提交到dev分支
![pYYBAGMnL7GAcSFgAABv2dYHUnI463.png#pic_center](https://file.elecfans.com//web2/M00/6B/2C/pYYBAGMnL7GAcSFgAABv2dYHUnI463.png#pic_center)
4.2 修改主分支并提交
$ git checkout master //切換到主分支
$ vim 1.txt //修改1.txt文件
git 分支測試
主分支測試
$ git add 1.txt
$ git commit -m "主分支提交測試"
$ git push origin master //修改內(nèi)容提交到主分支
![poYBAGMnL7KAOZ7DAABj0uRXICs248.png#pic_center](https://file.elecfans.com//web2/M00/6A/95/poYBAGMnL7KAOZ7DAABj0uRXICs248.png#pic_center)
4.3 合并分支
$ git merge dev -m "分支合并" //合并分支
自動合并 1.txt
沖突(內(nèi)容):合并沖突于 1.txt
自動合并失敗,修正沖突然后提交修正的結(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")
??打開1.txt文件可查看到主分支和dev分支的修改內(nèi)容。
![pYYBAGMnL7KAam6qAAC6M5d48SM158.png#pic_center](https://file.elecfans.com//web2/M00/6B/2C/pYYBAGMnL7KAam6qAAC6M5d48SM158.png#pic_center)
??由于主分支和dev分支都對1.txt文字做出修改,導(dǎo)致分支自動合并失敗,此時就需要手動解決分支沖突問題。我們打開1.txt文件就可以看到主分支和dev分支的修改狀況,我們需要手動合并。
?當(dāng)我們在合并分支時,遇到自動合并失敗,則可以通過git status 查看狀態(tài)信息,查看出現(xiàn)合并失敗的問題文件,然后收合并分支,再次添加提交文件,編寫提交說明重新提交即可。
在實(shí)際開發(fā)中,我們應(yīng)該按照?個基本原則進(jìn)?分?管理: ?先,master分?應(yīng)該是?常穩(wěn)定的,也就是僅?來發(fā)布新版本,平時不能在上?干活; 那在哪干活呢?干活都在dev分?上,也就是說,dev分?是不穩(wěn)定的,到某個時候,?如 1.0版本發(fā)布時,再把dev分?合并到master上,在master分?發(fā)布1.0版本; 你和你的?伙伴們每個?都在dev分?上干活,每個?都有??的分?,時不時地往dev分 ?上合并就可以了。
所以,團(tuán)隊(duì)合作的分?看起來就像這樣:
![pYYBAGMnL7KAWILyAADcZJ_N19Y807.png#pic_center](https://file.elecfans.com//web2/M00/6B/2C/pYYBAGMnL7KAWILyAADcZJ_N19Y807.png#pic_center)
5.多人協(xié)作
??Git是一個開源的分布式版本控制系統(tǒng),可以有效的完成版本管理和多人協(xié)作開發(fā)。要實(shí)現(xiàn)多人協(xié)作則需要在服務(wù)器端添加協(xié)作人員。
??在倉庫管理中可以添加開發(fā)者人員,設(shè)置代碼審核人員和分支合并審核。
![poYBAGMnL7KABzczAAEtGyXvC8E218.png#pic_center](https://file.elecfans.com//web2/M00/6A/95/poYBAGMnL7KABzczAAEtGyXvC8E218.png#pic_center)
-
控制系統(tǒng)
+關(guān)注
關(guān)注
41文章
6658瀏覽量
110884 -
開源
+關(guān)注
關(guān)注
3文章
3402瀏覽量
42711 -
Git
+關(guān)注
關(guān)注
0文章
201瀏覽量
15818
發(fā)布評論請先 登錄
相關(guān)推薦
關(guān)于git的遠(yuǎn)程分支的詳細(xì)介紹
![關(guān)于<b class='flag-5'>git</b>的遠(yuǎn)程<b class='flag-5'>分支</b>的詳細(xì)介紹](https://file.elecfans.com/web1/M00/C9/63/o4YBAF-CZuqAUjqkAAIuuMXTWp4402.png)
Git命令之本地分支與遠(yuǎn)程分支關(guān)聯(lián)和解除
![<b class='flag-5'>Git</b>命令之本地<b class='flag-5'>分支</b>與遠(yuǎn)程<b class='flag-5'>分支</b>關(guān)聯(lián)和解除](https://file1.elecfans.com/web2/M00/B5/86/wKgaomV7q8eADL5WAAAFmNUzbKw448.jpg)
【AD系列教程】多人PCB協(xié)作設(shè)計(jì)
git簡單使用(一)
Git分支,為何以及如何使用分支
Git最佳實(shí)踐,什么才是最佳工作流
利用Learn Git Branching輕松學(xué)習(xí)Git
Git / GitHub 是什么?有什么用?
如何設(shè)置Git的SSH秘鑰
![如何設(shè)置<b class='flag-5'>Git</b>的SSH秘鑰](https://file.elecfans.com/web2/M00/90/41/pYYBAGPlueOAJ8nmAABWwzmPDuk590.png)
Git的分支管理
![<b class='flag-5'>Git</b>的<b class='flag-5'>分支</b>管理](https://file.elecfans.com/web2/M00/92/7D/poYBAGPzF-mAQ1acAAEN1jydEAA543.jpg)
git rebase與相關(guān)git merge命令比較
![<b class='flag-5'>git</b> rebase與相關(guān)<b class='flag-5'>git</b> merge命令比較](https://file1.elecfans.com/web2/M00/88/C0/wKgZomRwbCeAJgMaAAALKLV0Y34480.jpg)
評論