以前在小公司實習,只需要簡單提交代碼,沒有涉及代碼分支,請求合併分支等,現在入職到大公司,代碼規範要求較高,且多人協作開發,這一必須的技能要會,手忙腳亂之餘,終於搞懂了整個流程。
第一個疑問:我從gitlab上面拉代碼的時候要不要切分支?
git clone代碼之前,可以直接拉取master分支上的代碼,master分支的代碼要求時刻處於部署的狀態,是完整的。
代碼拉下來之後,本地代碼也處於master分支,這個時候我git checkout develop創建了一個本地的develop分支,此時查看所有的分支是這樣的:
接着,我創建了一個本地分支:
git checkout -b feature-aa 結果:Switched to a new branch 'feature-aa'
接下來,我要把這個分支提交上去:
然後去gitlab上面操作,發送合併代碼請求
之所以創建本地分支,是我在代碼編寫過程中,不能直接在master分支上做代碼修改,因此在創建的本地分支上面對代碼進行修改。
再來補充一下整體流程:
(1)將自己在本地分支上的修改放在暫存區,git stash(git stash 項目完成一部分,需要跳轉分支,可以用來保存當前分支上修改的代碼,把當前分支還原到上一次commit的狀態)。
(2)切換到develop分支,git pull,將代碼拉下來,看是否有衝突;有衝突解決衝突,沒有衝突,繼續進行。
(3)切換到原先開發的本地分支,將修改的代碼從暫存區拿出來;git stash pop
(4)git add .
(5)git commit -m 'aa'
(6)git push origin fixbug-dl: fixbug-dl
git push <遠程主機名> <本地分支名>:<遠程分支名>
PS:注意,分支推送順序的寫法是<來源地>:<目的地>,所以git pull是<遠程分支>:<本地分支>,而git push是<本地分支>:<遠程分支>。
(7)刪除遠程自己創建的分支:git push origin --delete fixbug-dl
(8)去GitLab發merge request
不錯的一篇文章:https://www.cnblogs.com/JennyLin77/p/git.html
1、在項目文件目錄下,打開Git Bash Here;
2、使用git add命令,將我們要提交的文件信息(包括有修改過和新建的文件)添加到索引庫。輸入以下命令:
git add .
3、使用git commit命令,根據索引庫的內容進行文件的提交。輸入以下命令:
git commit -m "commit the user's jade"
4、新建本地分支:git branch <branchname>,輸入命令:
git branch xf
5、查看該項目的所有本地和遠程分支:git branch -a ,並在當前所在分支前加"*"標記
拓展:git branch 查看本地分支
git branch -r 查看遠程分支
此處,我們查看所有分支,包括遠程和本地,故輸入命令:(該步驟可省略)
git branch -a
6、切換本地分支:git checkout <分支名>,輸入以下命令:
git checkout xf
7、把遠程分支的代碼pull到本地分支:git pull <遠程主機名> <遠程分支名>:<本地分支名>
如:取回origin主機的xf分支,與本地的xf分支合併,輸入命令:
git pull origin xf:xf
遠程主機名可通過上方的git branch -a或git branch -r查詢,看下圖:
PS:push代碼前最好先用pull更新本地代碼。
8、最後一步:git push <遠程主機名> <本地分支名>:<遠程分支名>
PS:注意,分支推送順序的寫法是<來源地>:<目的地>,所以git pull是<遠程分支>:<本地分支>,而git push是<本地分支>:<遠程分支>。
eg:
git push origin xf:xf 上面命令表示,將本地的xf分支推送到origin主機的xf分支。
如果省略遠程分支名,則表示將本地分支推送與之存在"追蹤關係"的遠程分支(通常兩者同名),如果該遠程分支不存在,則會被新建。
eg: git push origin test
上面命令表示,將本地的test分支推送到origin主機的test分支。如果後者不存在,則會被新建。
PS:提交遠程分支有三種方式,我用的是下面第一種方法,大家有空也可以試下另外兩種。
1. add並且commit,再checkout,提交到當前分支;
2. add但不commit,可以stash,然後checkout回來之後stash apply,在commit,提交到當前分支;
3. add但不commit,也不stash,直接checkout,然後再commit,(提交)記錄就在切換分支下面。