git分支應(yīng)用和多人協(xié)作
1.知識百科
Git(讀音為/g?t/)是一個(gè)開源的分布式版本控制系統(tǒng),可以有效、高速地處理從很小到非常大的項(xiàng)目版本管理。 也是Linus Torvalds為了幫助管理Linux內(nèi)核開發(fā)而開發(fā)的一個(gè)開放源碼的版本控制軟件。
git 包含了完善的客戶端和服務(wù)端,客戶端和服務(wù)端之間通過某種安全通信 協(xié)議(HTTPS 或者 SSH)進(jìn)行文件的上傳和下載。
git工具安裝和基本使用參考:https://blog.csdn.net/weixin_44453694/article/details/123999289
2.git分支
分?就是科幻電影??的平?宇宙,當(dāng)你正在電腦前努?學(xué)習(xí)Git的時(shí)候,另?個(gè)你正在另?個(gè)平?宇宙?努?學(xué)習(xí)SVN。兩者之間可以同時(shí)執(zhí)行。
分?在實(shí)際中有什么?呢?假設(shè)你準(zhǔn)備開發(fā)?個(gè)新功能,但是需要兩周才能完成,第?周你寫了50%的代碼,如果?刻提交,由于代碼還沒寫完,若直接提交則會(huì)導(dǎo)致代碼不完整影響其他人工作。但若等所有代碼寫完再一次性提交,?存在丟失每天進(jìn)度的巨??險(xiǎn)。而有了分支的產(chǎn)生,就可以創(chuàng)建一個(gè)屬于自己的分支,只有自己才能看到分支內(nèi)容,別?看不到,還繼續(xù)在原來的分?上正常?作,?你在??的分?上干活,想提交就提交,直到開發(fā)完畢后,再?次性合并到原來的分?上,這樣,既安全,又可以多人協(xié)作開發(fā),互不影響。
在沒有分支之前,master分?是?條線,Git?master指向最新的提交,再?HEAD指向master,就能確定當(dāng)前分?,以及當(dāng)前分?的提交點(diǎn):
??每次提交,master分?都會(huì)向前移動(dòng)?步,這樣,隨著你不斷提交,master分?的線也越
來越?。
??當(dāng)我們創(chuàng)建新的分?,例如dev時(shí),git新建了?個(gè)指針叫dev,指向master相同的提交,再把HEAD指向dev,就表?當(dāng)前分?在dev上:
??當(dāng)有了dev分支,我們就可以通過改變HEAD指向來操作不同分支,當(dāng)HEAD指向dev分支時(shí)則只能操作dev。當(dāng)我們工作完成后,就可以將master和dev分支合并,即直接讓master指向dev提交分支。甚至可以直接刪除dev分支。
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í)例" //編寫提交說明
[dev 8873ebd] 分支應(yīng)用實(shí)例
1 file changed, 1 insertion(+)
create mode 100644 1.txt
$ git push origin dev //提交到dev分支
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
$ 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分支
4.2 修改主分支并提交
$ git checkout master //切換到主分支
$ vim 1.txt //修改1.txt文件
git 分支測試
主分支測試
$ git add 1.txt
$ git commit -m "主分支提交測試"
$ git push origin master //修改內(nèi)容提交到主分支
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")
??打開1.txt文件可查看到主分支和dev分支的修改內(nèi)容。
??由于主分支和dev分支都對1.txt文字做出修改,導(dǎo)致分支自動(dòng)合并失敗,此時(shí)就需要手動(dòng)解決分支沖突問題。我們打開1.txt文件就可以看到主分支和dev分支的修改狀況,我們需要手動(dòng)合并。
?當(dāng)我們在合并分支時(shí),遇到自動(dòng)合并失敗,則可以通過git status 查看狀態(tài)信息,查看出現(xiàn)合并失敗的問題文件,然后收合并分支,再次添加提交文件,編寫提交說明重新提交即可。
在實(shí)際開發(fā)中,我們應(yīng)該按照?個(gè)基本原則進(jìn)?分?管理: ?先,master分?應(yīng)該是?常穩(wěn)定的,也就是僅?來發(fā)布新版本,平時(shí)不能在上?干活; 那在哪干活呢?干活都在dev分?上,也就是說,dev分?是不穩(wěn)定的,到某個(gè)時(shí)候,?如 1.0版本發(fā)布時(shí),再把dev分?合并到master上,在master分?發(fā)布1.0版本; 你和你的?伙伴們每個(gè)?都在dev分?上干活,每個(gè)?都有??的分?,時(shí)不時(shí)地往dev分 ?上合并就可以了。
所以,團(tuán)隊(duì)合作的分?看起來就像這樣:
5.多人協(xié)作
??Git是一個(gè)開源的分布式版本控制系統(tǒng),可以有效的完成版本管理和多人協(xié)作開發(fā)。要實(shí)現(xiàn)多人協(xié)作則需要在服務(wù)器端添加協(xié)作人員。
??在倉庫管理中可以添加開發(fā)者人員,設(shè)置代碼審核人員和分支合并審核。
-
控制系統(tǒng)
+關(guān)注
關(guān)注
41文章
6618瀏覽量
110605 -
開源
+關(guān)注
關(guān)注
3文章
3348瀏覽量
42496 -
Git
+關(guān)注
關(guān)注
0文章
199瀏覽量
15759
發(fā)布評論請先 登錄
相關(guān)推薦
評論