git環(huán)境和工具
git環(huán)境下載: https://gitforwindows.org/
windows最好用的工具TortoiseGit下載: https://tortoisegit.org/download/
git工作流圖解
克隆遠(yuǎn)程項目至本地倉庫
找到gitlab上和媳,項目對應(yīng)的git地址:
將git倉庫clone至本地:
- 輸入git地址
- 選定本地文件夾
- 點(diǎn)擊確定
- 輸入git賬號密碼
提交
本地提交:
右鍵 -> git commit
- 輸入提交信息
- 選中提交文件
- 勾選操作選項(圖中commit按鈕)佃迄。
強(qiáng)烈建議選commit,不要選commit and push.
push 是影響遠(yuǎn)端服務(wù)器的操作荧恍,謹(jǐn)慎操作 !!!
沖突解決
當(dāng)兩個代碼塊之間镰烧,有相同的修改。就會產(chǎn)生沖突楞陷。
沖突一般都是在pull或者merge request的時候產(chǎn)生的怔鳖。
以下演示一個pull發(fā)生沖突的事例.
本地修改了README.md文件,pull
提示文件有merge固蛾,沒有辦法拉取到本地工作區(qū)
這個時候需要將本地代碼 commit或者stash(清空工作區(qū))才能pull结执,合并代碼
提交到本地之后,pull會提示代碼有merge
打開文件艾凯,將沖突解決献幔。
- 藍(lán)色線條標(biāo)記為, 遠(yuǎn)程倉庫的文件內(nèi)容
- 紅色線條標(biāo)記為趾诗,本地提交的文件內(nèi)容
如果沖突比較復(fù)雜蜡感,建議拉小伙伴商量一下,要哪一行代碼
解決之后,再點(diǎn)擊git commit.
對之前沖突的文件右鍵-> resolved
文件會變?yōu)檎4峤粻顟B(tài)恃泪。
再次commit即可郑兴。
推送修改至遠(yuǎn)端倉庫
由于tortoise的UI排布問題。很難顯性的看出一次push會推送多少個commit至遠(yuǎn)端
推薦先看一下版本樹贝乎,右鍵-> Show log
如圖所示情连, 每一個 commit會形成一個提交記錄。
- develop代表本地的develop分支
- origin/develop代表遠(yuǎn)程倉庫的develop 分支
本地的develop節(jié)點(diǎn)览效,領(lǐng)先了遠(yuǎn)程的develop分支一個提交却舀。
push本地的develop提交記錄,至遠(yuǎn)端develop
查看版本樹:
創(chuàng)建分支
點(diǎn)擊右鍵 -> create Branch
Name - Branch 代表新建分支的名稱
Base On 代表基于分支創(chuàng)建當(dāng)前分支
- head 代表當(dāng)前活躍分支的游標(biāo)
- branch 代表對應(yīng)的分支
-
Tag 代表分支上某次被標(biāo)識的提交(比如 develop分支上某次歷史提交)
正式創(chuàng)建分支
將創(chuàng)建的本地分支推送至遠(yuǎn)端
右鍵->push
切換分支
右鍵-> swich/check out
切換至develop_test分支
如果本地工作區(qū)有代碼尚未提交锤灿,需要commit或者stash挽拔。
清空工作區(qū), 才能切換分支
分支合并
git分支合并有merge和rebase但校。這里只介紹merge方法.
rebase用的比較少篱昔,風(fēng)險大(當(dāng)然收益也大)。
rebase詳細(xì)講解請看:http://www.reibang.com/p/f23f72251abc
補(bǔ)充:有同一祖先的分支,才能合并
將develop_test合并入develop分支
準(zhǔn)備條件:
- develop_test有幾個獨(dú)立的提交記錄州刽,并且已經(jīng)提交至遠(yuǎn)端
- 本地工作區(qū)切換至develop
右鍵-> merge
從遠(yuǎn)端的develop_test分支空执,合并入當(dāng)前分支(develop)
如果兩個分支有沖突,合并過來的代碼會出現(xiàn)在提交列表中等待解決沖突穗椅。
解決沖突后辨绊,正常commit然后push即可
show log 看版本樹,會看到develop_test上有一條線連入了develop分支
如果要同步develop上的更改至develop_test匹表。
切換至develop_test分支门坷,再從develop merge合并即可
git推薦正確的使用流程
在分支合并的階段,不在本地merge袍镀,而是發(fā)merge request
merge request
在項目主頁默蚌,進(jìn)入merge request
點(diǎn)擊 new merge request
- 紅色筆標(biāo)識項目
- 藍(lán)色筆標(biāo)識分支
從source branch 合并至 target branch
配置選項,選擇負(fù)責(zé)merge request的人
合并之后苇羡,刪除source branch
等待審核人完成此次merge request即可
最后
git要精通需要看懂其工作原理绸吸,多做實驗。
push 和 merge request 需要謹(jǐn)慎设江,本地炸了锦茁,大不了刪庫,遠(yuǎn)程炸了只能跑路叉存。码俩。。
推薦:
超級全的git詳解: http://www.cnblogs.com/best/p/7474442.html#_lab2_2_1