1. 項(xiàng)目初始化
首先是 git 配置,這里不細(xì)說了。
在目標(biāo)目錄,右鍵打開 Git Bash
克隆遠(yuǎn)程倉庫到本地:git clone git@192.168.91.175:xxx/erp.git
2. 常規(guī)開發(fā)流程
執(zhí)行git checkout -b fjl
命令(最后一個(gè)參數(shù)是你自己的名字),以當(dāng)前分支為基礎(chǔ)新建一個(gè)以你自己的名字為名的分支(為交流方便,下面簡稱為“名字分支”),并且會自動(dòng)切換到你新建的這個(gè)分支。
如果要開發(fā)一個(gè)新功能或修復(fù) bug 等等,建議執(zhí)行git checkout -b fjl
命令切換到自己的名字分支之后,再建一個(gè)開發(fā)分支,然后才進(jìn)行開發(fā)。
下面以開發(fā)一個(gè)新功能為例,主要思路如下:
添加到暫存區(qū)
提交到本地版本庫
pull 遠(yuǎn)程更新到本地 develop 分支
把本地 develop 分支 merge 到本地名字分支(解決沖突)
push 本地名字分支到遠(yuǎn)程
執(zhí)行
git checkout -b feature_1
命令(最后一個(gè)參數(shù)是你自己定的分支名稱),這會新建一個(gè)“feature_1”分支,并自動(dòng)切換到這個(gè)分支。(這一步其實(shí)就是我們平常進(jìn)行的開發(fā)活動(dòng))我們手動(dòng)在根目錄新建一個(gè)文件:123.php,在里面敲上一堆代碼,保存。
執(zhí)行
git add 123.php
命令,把剛才的開發(fā)添加到暫存區(qū)。執(zhí)行
git status
命令,查看工作目錄中所有文件的狀態(tài)(這不是必須的,但是一個(gè)好習(xí)慣,它會告訴你哪些文件還沒有暫存,哪些文件還沒有提交)。執(zhí)行
git commit -m 'add 123.php'
命令(最后一個(gè)參數(shù)是提交信息,最好認(rèn)真寫,一般采用動(dòng)賓結(jié)構(gòu),例如:修改xxx,添加xxx,刪除xxx等等),提交到本地版本庫。執(zhí)行
git checkout fjl
命令,切換到你的名字分支。(這時(shí)候,查看本地文件夾,是沒有 123.php 這個(gè)文件的)。執(zhí)行
git merge feature_1
命令,將 feature_1 分支合并到 fjl 分支。(這時(shí)候,查看本地文件夾,出現(xiàn)了 123.php 這個(gè)文件)。執(zhí)行
git pull origin develop:develop
命令(git pull <遠(yuǎn)程主機(jī)名> <遠(yuǎn)程分支名>:<本地分支名>
),取回遠(yuǎn)程主機(jī)develop 分支的更新(因?yàn)槠渌_發(fā)者可能更新了代碼上去,而你本地的還是舊版的,所以要先拉取別人的更新),并且自動(dòng)與本地的 develop 分支合并。執(zhí)行
git merge develop
命令(此時(shí)你的當(dāng)前分支應(yīng)該為你的名字分支),把 develop 分支合并到 當(dāng)前分支(即 fjl 分支)。如果存在沖突,請參照下面的【git 合并沖突解決辦法】。執(zhí)行
git push origin fjl:fjl
命令(git push <遠(yuǎn)程主機(jī)名> <本地分支名>:<遠(yuǎn)程分支名>
),把本地分支推送到遠(yuǎn)程分支(如果該遠(yuǎn)程分支尚未存在,則會自動(dòng)幫你新建)。
3. GitLab 上的操作
(1)開發(fā)者在 gitlab 上向管理者提交合并申請
(2)管理者審核代碼,符合要求則接受該開發(fā)者的合并申請
4. git 合并沖突解決辦法:
(1)什么情況下,git 會提示存在沖突?
根據(jù)其他資料和實(shí)際使用經(jīng)驗(yàn),當(dāng)兩個(gè)需要合并的分支 修改了同一個(gè)文件 的 同一段代碼的時(shí)候,git 會提示存在沖突。
注:
“沖突”,顧名思義,兩個(gè)分支對代碼的改動(dòng) 只有在重疊的時(shí)候,才是沖突;
如果兩個(gè)分支對代碼的改動(dòng) 恰好是錯(cuò)開的(即只有一個(gè)分支對某段代碼進(jìn)行了改動(dòng),而另一段代碼沒有并沒有改動(dòng)該段代碼),則不是沖突;對于存在沖突的文件,git 能夠把它們一一陳列出來;并且自動(dòng)把存在沖突的 文件內(nèi)代碼段標(biāo)記出來。
對于不存在沖突的文件、文件內(nèi)的代碼段,git 能夠自動(dòng)完成合并。
(2)如何解決沖突?
① 合并的時(shí)候,git 會自動(dòng)檢測出存在沖突的文件 并一一列出來;
② 用編輯器打開 ① 中第一個(gè)存在沖突的文件,
簡單情形:你會發(fā)現(xiàn)解決沖突其實(shí)就是一個(gè)選擇題;
復(fù)雜情形:這時(shí)候就不是一個(gè)簡單的選擇題可以解決的了。這里需要你對代碼比較熟悉,將兩個(gè)分支對代碼的改動(dòng)糅合在一起(既可以以你當(dāng)前分支的代碼為基礎(chǔ),也可以以另一個(gè)分支為基礎(chǔ),我也不知道實(shí)際上哪一種會比較好,大家自己想想吧)
③ 以此類推,把 ① 中所有文件中的沖突都解決;
④ 接下來就是平常做的 add 和 commit(記得先 git status 查看一下),至此,沖突解決并且合并完成。