?
目錄
一、團(tuán)隊(duì)內(nèi)協(xié)作和跨團(tuán)隊(duì)協(xié)作講述
1、團(tuán)隊(duì)內(nèi)協(xié)作
2、跨團(tuán)隊(duì)協(xié)作
?二、團(tuán)隊(duì)內(nèi)合作交互方式?
1、初始化本地庫(kù)
2、創(chuàng)建遠(yuǎn)程庫(kù)
3、在本地創(chuàng)建遠(yuǎn)程庫(kù)地址的別名
4、推送操作
5、克隆操作
6、邀請(qǐng)加入團(tuán)隊(duì),push操作
7、遠(yuǎn)程庫(kù)修改的拉取操作
8、遠(yuǎn)程庫(kù)修改的拉取操作2
9、協(xié)同開(kāi)發(fā)合作時(shí)沖突的解決辦法
三、跨團(tuán)隊(duì)合作交互方式
1、跨團(tuán)隊(duì)合作
2、SSH免密登錄
四、IDEA集成Git
1、IDEA集成Git:
2、本地庫(kù)和遠(yuǎn)程庫(kù)的交互
3、在IDEA中進(jìn)行推送:
4、使用IDEA克隆遠(yuǎn)程庫(kù)到本地
5、解決沖突
6、如何避免沖突
一、團(tuán)隊(duì)內(nèi)協(xié)作和跨團(tuán)隊(duì)協(xié)作講述
1、團(tuán)隊(duì)內(nèi)協(xié)作
如果是同一個(gè)公司內(nèi)一個(gè)團(tuán)隊(duì)協(xié)作開(kāi)發(fā)項(xiàng)目,在Git中的使用方式通常是采用單一共享倉(cāng)庫(kù)的方式,這種模式稱(chēng)為集中式版本控制系統(tǒng)(Centralized Version Control System, CVCS)。
具體流程如下:
1. 在公司內(nèi)部搭建一個(gè)開(kāi)發(fā)團(tuán)隊(duì)所有成員都可以訪(fǎng)問(wèn)的Git倉(cāng)庫(kù)。
2. 團(tuán)隊(duì)成員將該倉(cāng)庫(kù)clone到本地后,在本地進(jìn)行開(kāi)發(fā)。
3. 開(kāi)發(fā)完成后,通過(guò)git push將代碼推送到共享倉(cāng)庫(kù)。
4. 其他團(tuán)隊(duì)成員通過(guò)git pull獲取最新代碼。
5. 倉(cāng)庫(kù)中存儲(chǔ)著項(xiàng)目的所有更新歷史和多個(gè)開(kāi)發(fā)者的貢獻(xiàn)。
6. 通過(guò)分支、標(biāo)簽等方式管理功能的開(kāi)發(fā)。
7. 采用代碼review流程,確保倉(cāng)庫(kù)代碼質(zhì)量。
這種單倉(cāng)庫(kù)多開(kāi)發(fā)者的模式,可以最大限度地減少?zèng)_突,是同一個(gè)團(tuán)隊(duì)協(xié)作開(kāi)發(fā)的最佳實(shí)踐。它可以看作是集中式版本控制的方式,通過(guò)Git實(shí)現(xiàn)。?
2、跨團(tuán)隊(duì)協(xié)作
如果是同一個(gè)公司內(nèi)部的不同開(kāi)發(fā)團(tuán)隊(duì)協(xié)作開(kāi)發(fā)項(xiàng)目,在Git中的協(xié)作方式通常是采用共享倉(cāng)庫(kù)的方式,這種模式稱(chēng)為DCVS(Distributed Version Control System,分布式版本控制系統(tǒng))。
具體流程如下:
1. 公司內(nèi)部搭建一個(gè)內(nèi)部的Git倉(cāng)庫(kù),作為項(xiàng)目的主倉(cāng)庫(kù)。
2. 每個(gè)團(tuán)隊(duì)從主倉(cāng)庫(kù)fork一個(gè)自己的子倉(cāng)庫(kù),團(tuán)隊(duì)內(nèi)部開(kāi)發(fā)在該倉(cāng)庫(kù)進(jìn)行。
3. 開(kāi)發(fā)完成后,每個(gè)團(tuán)隊(duì)都可以通過(guò)push將代碼推送回主倉(cāng)庫(kù)。
4. 通過(guò)pull請(qǐng)求和代碼review的流程,各團(tuán)隊(duì)協(xié)同確保主倉(cāng)庫(kù)內(nèi)代碼的質(zhì)量。
5. 每個(gè)團(tuán)隊(duì)定期從主倉(cāng)庫(kù)pull取最新代碼,與自己的子倉(cāng)庫(kù)同步。
這種一個(gè)主倉(cāng)庫(kù)多團(tuán)隊(duì)協(xié)作的模式,可以最大限度地協(xié)調(diào)公司內(nèi)部的開(kāi)發(fā),防止沖突,保證主倉(cāng)庫(kù)代碼的穩(wěn)定。也符合Git分布式版本控制的設(shè)計(jì)思想。因而在同一個(gè)公司內(nèi)非常常見(jiàn)。
?二、團(tuán)隊(duì)內(nèi)合作交互方式?
1、初始化本地庫(kù)
2、創(chuàng)建遠(yuǎn)程庫(kù)
【1】創(chuàng)建遠(yuǎn)程庫(kù)
【2】錄入信息:
【3】完成狀態(tài):
3、在本地創(chuàng)建遠(yuǎn)程庫(kù)地址的別名
(1)遠(yuǎn)程庫(kù)的地址:
點(diǎn)擊進(jìn)入:
(2)遠(yuǎn)程庫(kù)地址比較長(zhǎng),每次復(fù)制比較麻煩 ,在Git本地將地址保存,通過(guò)別名?
查看別名:
起別名:
?
4、推送操作
推送成功以后,查看自己的遠(yuǎn)程庫(kù):
5、克隆操作
(1)遠(yuǎn)程庫(kù)地址復(fù)制:
(2)克隆操作:
克隆操作可以幫我們完成:
(1)初始化本地庫(kù)
(2)將遠(yuǎn)程庫(kù)內(nèi)容完整的克隆到本地
(3)替我們創(chuàng)建遠(yuǎn)程庫(kù)的別名:?
6、邀請(qǐng)加入團(tuán)隊(duì),push操作
【1】更新本地庫(kù)信息:
【2】push內(nèi)容到遠(yuǎn)程庫(kù)中去:
發(fā)現(xiàn)可以直接push進(jìn)去,并沒(méi)有讓我錄入賬號(hào)密碼,或者也沒(méi)有提示錯(cuò)誤 - --》結(jié)果 很詭異?
原因:git使用的時(shí)候在本地有緩存:
將緩存刪除:
現(xiàn)在再次重新push,發(fā)現(xiàn)出錯(cuò)了:
必須要加入團(tuán)隊(duì):
登錄項(xiàng)目經(jīng)理的賬號(hào),邀請(qǐng)普通成員:?
?
?
登錄被邀請(qǐng)者的賬號(hào),接收邀請(qǐng):(在地址欄錄入邀請(qǐng)鏈接即可:https://github.com/zhaoshanshan3366/GitResp2/invitations)
7、遠(yuǎn)程庫(kù)修改的拉取操作
【1】拉取操作 pull操作,相當(dāng)于 ?fetch+merge ?
【2】項(xiàng)目經(jīng)理先先確認(rèn)遠(yuǎn)程庫(kù)內(nèi)容是否更新了:
【3】項(xiàng)目經(jīng)理進(jìn)行拉?。?/p>
(1)先是抓取操作:fetch:
在抓取操作執(zhí)行后,只是將遠(yuǎn)程庫(kù)的內(nèi)容下載到本地,但是工作區(qū)中的文件并沒(méi)有更新。工作區(qū)中還是原先的內(nèi)容:
抓取后可以去遠(yuǎn)程庫(kù)看看內(nèi)容是否正確:
然后發(fā)現(xiàn)內(nèi)容都正確,就可以進(jìn)行合并操作了:
合并之前應(yīng)該將分支切換回來(lái):
(2)進(jìn)行合并:merge:
8、遠(yuǎn)程庫(kù)修改的拉取操作2
遠(yuǎn)程庫(kù)的拉取可以直接利用pull命令來(lái)完成:?
fetch+merge操作:---》為了保險(xiǎn),慎重?
pull --->代碼簡(jiǎn)單,省事
9、協(xié)同開(kāi)發(fā)合作時(shí)沖突的解決辦法
【1】向遠(yuǎn)程庫(kù)推送數(shù)據(jù):
?
【2】做了一個(gè)拉取操作:?
到這里為止,現(xiàn)在遠(yuǎn)程合作沒(méi)有任何問(wèn)題。
現(xiàn)在操作同一個(gè)文件的同一個(gè)位置的時(shí)候,就會(huì)引起沖突:
【3】再次做了推送操作:
改動(dòng)位置:
【4】改動(dòng)Test.txt中內(nèi)容,然后進(jìn)行推送:
發(fā)現(xiàn) 推送失敗!
在沖突的情況下,先應(yīng)該拉取下來(lái),然后修改沖突,然后再推送到遠(yuǎn)程服務(wù)器:
先拉?。?/p>
查看沖突:
?
人為解決這個(gè)沖突:(該刪的刪,該留的留)
解決完沖突以后,向服務(wù)器推送:
推送:
解決了沖突問(wèn)題:
三、跨團(tuán)隊(duì)合作交互方式
1、跨團(tuán)隊(duì)合作
【1】得到遠(yuǎn)程庫(kù)的地址:
?
【2】進(jìn)行fork操作:
進(jìn)入到賬號(hào)后:復(fù)制地址:https://github.com/zhaoshanshan3366/GitResp2.git
然后點(diǎn)擊下面的fork操作:
【3】然后就可以克隆到本地,并且進(jìn)行修改:
然后更改數(shù)據(jù):添加到暫存區(qū),然后提交到本地庫(kù),然后push到遠(yuǎn)程庫(kù):
【4】進(jìn)行pull request操作:
?
?
【5】進(jìn)行審核操作:
可以互相留言:
查看具體提交的內(nèi)容:
確定通過(guò)以后,可以進(jìn)行合并:
2、SSH免密登錄
免密操作:
【1】進(jìn)入用戶(hù)的主目錄中:
【2】執(zhí)行命令,生成一個(gè).ssh的目錄:
keygen ?--- > ?key generation
注意:C要大寫(xiě)
后面的郵箱,是你的github注冊(cè)的賬號(hào)的時(shí)候?qū)?yīng)的郵箱
三次回車(chē)確認(rèn)默認(rèn)值即可?
發(fā)現(xiàn)在.ssh目錄下有兩個(gè)文件:
【3】打開(kāi)id_rad.pub文件,將里面的內(nèi)容進(jìn)行復(fù)制操作:
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCqiZEbHnyAbBFzx/OFWUyxlL2NUyf//1NdmvYfi+x09AENYVDXcPc2CLiUSYpUcRj7eWuLiIBuzYO/0aYTYgSLPMKAKn8WSLipd7S+vqRsxRLZYna+WvfGvYXc6DexenZlgoMzQe7CBE4IaL1eG4IAvAbjXSF0pq7OJKkcb5L8lQ0HlU9p+eC7WluoW+ZThym/Au8lscDtUVE/I9IwAgvUXB4TxmP7aYD1YCrAUuQ+6mlgh+Tqqb4aWyHPIvtXidkWOPS2pZ7zGi+1cQE6UFxxNlIrH5tczmOKOZ2XKemFWMFc4S89O1y9M9pfOFZZ5F4gbQf6PmrbB4eSyYmWT1TH6FBlB9eaw8v8w186qvqbUKHIc450/hZuQ9LehhdHDgkT86uBAEkXBwwHvVsIM61AD7TC0E1uMw0/Cf4I64vZOVF0/pE6rjs+0LqvF/mtq4aM1riIkSKqFFEm5sx2MsCAJrSBTr3uQFufAMA4VmANH6YAtTwgIJtV5AI16XQlY/8= chinazss@126.com
【4】打開(kāi)github賬號(hào):
【5】生成密鑰以后,就可以正常進(jìn)行push操作了:
對(duì)ssh遠(yuǎn)程地址起別名:
展示別名:
創(chuàng)建一個(gè)文件:
添加到暫存區(qū),提交到本地庫(kù),然后push到遠(yuǎn)程庫(kù)(地址用的是ssh方式的地址)
?
ssh方式好處: ? 不用每次都進(jìn)行身份驗(yàn)證
缺陷:只能針對(duì)一個(gè)賬號(hào)
四、IDEA集成Git
1、IDEA集成Git:
本地庫(kù)的初始化操作:
本地庫(kù)初始化完成了,生成了.git目錄:
添加到暫存區(qū),再提交到本地庫(kù)操作; ?add +commit:
?
?
當(dāng)你更改內(nèi)容以后,前面跟本地庫(kù)內(nèi)容不一致的地方會(huì)顯示綠色:
?
2、本地庫(kù)和遠(yuǎn)程庫(kù)的交互
因?yàn)樗麄兪莾蓚€(gè)不同的項(xiàng)目,要把兩個(gè)不同的項(xiàng)目合并,git需要添加一句代碼,在??git pull??之后,這句代碼是在git 2.9.2版本發(fā)生的,最新的版本需要添加??--allow-unrelated-histories??告訴 git 允許不相關(guān)歷史合并。?
假如我們的源是origin,分支是master,那么我們需要這樣寫(xiě)?git pull origin master --allow-unrelated-histories??
這個(gè)方法只解決因?yàn)?/span>兩個(gè)倉(cāng)庫(kù)有不同的開(kāi)始點(diǎn),也就是兩個(gè)倉(cāng)庫(kù)沒(méi)有共同的 commit 出現(xiàn)的無(wú)法提交。如果使用本文的方法還無(wú)法提交,需要看一下是不是發(fā)生了沖突,解決沖突再提交
push推送:?git push -u origin master -f??
?到這里 遠(yuǎn)程庫(kù)和本地庫(kù)就可以進(jìn)行交互了。
3、在IDEA中進(jìn)行推送:
?
?
一般在開(kāi)發(fā)中先pull操作,再push操作,不會(huì)直接進(jìn)行push操作?。?
4、使用IDEA克隆遠(yuǎn)程庫(kù)到本地
利用IDEA進(jìn)行克隆項(xiàng)目:
?
克隆到本地后:
這個(gè)目錄既變成了一個(gè)本地倉(cāng)庫(kù),又變成了工作空間。
?
5、解決沖突
【1】在你push以后,有沖突的時(shí)候提示合并操作:?
合并:
?
6、如何避免沖突
【1】團(tuán)隊(duì)開(kāi)發(fā)的時(shí)候避免在一個(gè)文件中改代碼?文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-660218.html
【2】在修改一個(gè)文件前,在push之前,先pull操作文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-660218.html
到了這里,關(guān)于版本控制工具Git集成IDEA的學(xué)習(xí)筆記(第二篇GitHub)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!