第一步遠(yuǎn)程拉取上一篇安裝配置的時(shí)候已經(jīng)講過了,這邊就不再多說了
項(xiàng)目克隆完成之后,我們拉取的是master分支上的代碼梳猪,由于master分支是主分支,項(xiàng)目多人開發(fā)的情況下蒸痹,很容易造成沖突春弥。
所以我們一般會在gitlab遠(yuǎn)程新建一個(gè)自己的分支,如命名為:dev。
創(chuàng)建分支
(1)叠荠、新建自己的遠(yuǎn)程開發(fā)分支并在sourcetree中切換到該分支匿沛;如圖推送分支
2.將分支推送到遠(yuǎn)程
(第2步勾選后的下拉框是可以選擇推送到指定分支的)
然后點(diǎn)擊推送即可
如果想查看遠(yuǎn)程倉庫有的所有分支,點(diǎn)擊獲取即可
檢出別人分支
3.點(diǎn)擊別人的分支榛鼎,可以檢出你可以在此分支點(diǎn)擊獲取逃呼,查看別人開發(fā)的代碼
上面已經(jīng)涉及到一些基本操作,這邊再做一些補(bǔ)充
基本操作(界面暫存區(qū)者娱、本地倉庫和遠(yuǎn)程倉庫的認(rèn)識)
推送分支方式補(bǔ)充
可以直接右鍵分支推送刪除分支
1.本地刪除
右鍵目標(biāo)分支抡笼,刪除即可。
注意:這里的刪除是本地刪除黄鳍,不影響遠(yuǎn)程倉庫推姻。另外,當(dāng)你切換到目標(biāo)分支時(shí)框沟,不能進(jìn)行刪除操作藏古。
2.遠(yuǎn)程刪除
右鍵目標(biāo)分支增炭,刪除即可。這里是刪除遠(yuǎn)程分支拧晕。慎重隙姿。
另外遠(yuǎn)程不是你創(chuàng)建的分支你是沒有權(quán)限刪除的!
打標(biāo)簽
我們發(fā)布完版本后防症,可以給此次版本打上標(biāo)簽曹铃,這樣你在歷史記錄中可以清晰看到你的標(biāo)簽叛拷,更加醒目的做出管理
2.提交到本地倉庫
3.將修改合并到主支master
4.正文給master添加標(biāo)簽
倉庫管理必不可少要配置忽略文件阻课,避免不必要的文件影響性能和倉庫整潔度
使用sourcetree添加忽略文件的方法,如圖:開發(fā)的過程中可能遇到一些忽略文件中未添加的文件胜臊,此時(shí)需要開發(fā)者自行添加忽略文件,添加方法如下:
之前已經(jīng)介紹過未進(jìn)行版本控制的或者受版本控制的文件裙犹,在sourcetree的“文件狀態(tài)” 標(biāo)簽中查找尽狠,如圖所示:
鼠標(biāo)右鍵要忽略的文件,點(diǎn)擊“忽略”叶圃,選擇忽略的模式袄膏,即可將文件進(jìn)行忽略,如圖所示:
常見代碼合并情況
1.當(dāng)多個(gè)人一起開發(fā)掺冠,a可能開發(fā)a模塊沉馆,b可能開發(fā)b模塊;但是當(dāng)開發(fā)完后需要提交德崭,這兩個(gè)人開發(fā)的其實(shí)是一個(gè)版本斥黑,所以我們要合并代碼提交
例如:我現(xiàn)在在demo用戶,我需要將github的代碼合并到我這眉厨,我需要點(diǎn)擊進(jìn)入我demo的分支锌奴,然后右鍵github選擇合并他的分支到我當(dāng)前分支,如圖合并完憾股,就可以推送上去了鹿蜀!
2.當(dāng)用戶進(jìn)行新的版本的開發(fā),但是master的項(xiàng)目出現(xiàn)了bug要修復(fù)
我們當(dāng)然不能再開發(fā)中的分支去修改服球,這樣未經(jīng)審核的代碼提交會對線上的版本造成無法估計(jì)的后果耻姥,所以我們應(yīng)該重新拉取master創(chuàng)建新的master分支,修改后合并到master
補(bǔ)充方法有咨,利用暫存(stash)
1.如果有未提交的修改琐簇,則將現(xiàn)場先暫存(stash)
2.創(chuàng)建一個(gè)新分支fixBug,專門用于解決bug
3.將fixBug分支分別合并到dev分支和master分支
4.恢復(fù)現(xiàn)場
這里我就不多說了,盜圖,因?yàn)樗v得非常清晰
3.解決沖突
多人開發(fā)時(shí)婉商,由于修改了同一個(gè)文件似忧,可能會有文件沖突的情況。
拉取代碼時(shí)丈秩,會有沖突提示盯捌,解決完相關(guān)的沖突文件,重新提交即可蘑秽。
相信很多剛?cè)腴T的小朋友也遇到過,現(xiàn)在我們來總結(jié)下正確的操作 首先我們來看一下肠牲,什么情況表明你的文件沖突了如圖:
解決沖突先要安裝 Beyond compare插件
方法一:利用Beyond compare工具解決沖突
1.選擇沖突文件(感嘆號文件)->右鍵解決沖突->打開外部合并工具幼衰,打開工具注意:如果未安裝會報(bào)錯(cuò),請按上文安裝插件并配置
然后肥印,在相關(guān)的版本處识椰,選中”沖突行”,合并區(qū)默認(rèn)處于合并位置深碱,鼠標(biāo)右鍵腹鹉,選擇最終沖突地方留下的內(nèi)容,如圖:
3.保存會話后關(guān)閉界面敷硅,重新commit沖突解決后的文件种蘸,并推送到遠(yuǎn)程
方法二:針對一些簡單的沖突
如果沖突非常少,可以直接在右側(cè)欄中解決沖突竞膳,如圖所示:1.點(diǎn)擊未暫存區(qū)域的沖突文件
2.右側(cè)列表中出現(xiàn)沖突的內(nèi)容。
3.選擇沖突內(nèi)容诫硕,解決沖突坦辟,如圖所示:
暫存行:表示保留該內(nèi)容
丟棄行:表示刪除該內(nèi)容
備注:區(qū)分于第一種方式,使用第一種方法解決時(shí)章办,不要點(diǎn)擊”未暫存文件”,否則可能無法打開沖突文件
4.錯(cuò)誤提交到本地倉庫
5.版本回退
原則上锉走,代碼推送之前要保證本地的代碼可運(yùn)行,不要將不可運(yùn)行或者有問題的代碼推送到服務(wù)器上藕届,如果由于誤操作挪蹭,將代碼推送到了遠(yuǎn)程,想重新修改上傳代碼休偶,此時(shí)梁厉,需要將版本進(jìn)行回退,回退方法如圖:1、切換到日志/歷史標(biāo)簽
2词顾、選擇要恢復(fù)到的版本八秃,如圖藍(lán)色位置
3、鼠標(biāo)右鍵肉盹,選擇“重置當(dāng)前分支到此次提交”
5上忍、彈出框中選擇”Yes”
注意:請不要輕易嘗試
5.merge
先插曲科普下merge骤肛,博主找了張圖可以很清楚的說明merge,順帶科普了cherry pick
額外補(bǔ)充你必須要知道的SourceTree&Git部分名詞解釋
克隆(clone):從遠(yuǎn)程倉庫URL加載創(chuàng)建一個(gè)與遠(yuǎn)程倉庫一樣的本地倉庫
提交(commit):將暫存文件上傳到本地倉庫(我們在Finder中對本地倉庫做修改后一般都得先提交一次窍蓝,再推送)
檢出(checkout):切換不同分支
添加(add):添加文件到緩存區(qū)
移除(remove):移除文件至緩存區(qū)
暫存(git stash):保存工作現(xiàn)場
重置(reset):回到最近添加(add)/提交(commit)狀態(tài)
合并(merge):將多個(gè)同名文件合并為一個(gè)文件腋颠,該文件包含多個(gè)同名文件的所有內(nèi)容,相同內(nèi)容抵消
抓取(fetch):從遠(yuǎn)程倉庫獲取信息并同步至本地倉庫
拉取(pull):從遠(yuǎn)程倉庫獲取信息并同步至本地倉庫它抱,并且自動執(zhí)行合并(merge)操作秕豫,即 pull=fetch+merge
推送(push):將本地倉庫同步至遠(yuǎn)程倉庫,一般推送(push)前先拉裙坌睢(pull)一次混移,確保一致
分支(branch):創(chuàng)建/修改/刪除分枝
標(biāo)簽(tag):給項(xiàng)目增添標(biāo)簽
工作流(Git Flow):團(tuán)隊(duì)工作時(shí),每個(gè)人創(chuàng)建屬于自己的分枝(branch)侮穿,確定無誤后提交到master分枝
終端(terminal):可以輸入git命令行
注意
盡量不要使用pull,我的理解是pull是一種強(qiáng)制將遠(yuǎn)端拉取下來,所以盡量使用fetch吧,這樣才能更好的合代碼
還未碰到的問題,可以遇到后詳細(xì)說明
1.Sourcetree無法推送,ssh問題
2.超前一個(gè)版本落后n個(gè)版本
*3.上班第一件事:merge
4.sourcetree配置多個(gè)ssh來上傳項(xiàng)目
參考文獻(xiàn):(*快捷入門)
1.http://www.reibang.com/p/ea9ebad692d2
2.https://blog.csdn.net/benchow168168/article/details/82996525
3.https://blog.csdn.net/yunxuantu/article/details/84562617
4.https://blog.csdn.net/zyx_ly/article/details/87832170
5.https://blog.csdn.net/collonn/article/details/52710049
*6.https://jingyan.baidu.com/album/59703552beda4f8fc1074063.html?picindex=3
-7.https://blog.csdn.net/collonn/article/details/52710049
8.https://blog.csdn.net/benchow168168/article/details/82996525
9.https://blog.csdn.net/chang_ge/article/details/80796266
*10.https://my.oschina.net/daxiaLKS/blog/743254