詳細(xì)git命令,請(qǐng)參考:git教程
1. 倉庫初配置
-- 本地倉庫初始化
git init
-- 連接遠(yuǎn)程倉庫
git remote add origin gitlab倉庫地址
2. 提交代碼
-- 提交代碼前最好查看一下本地代碼狀態(tài)
git status
-- 將新建文件添加到版本控制中
git add .
git add file
-- 提交代碼
git commit -m "提交描述"
-- 推送代碼到遠(yuǎn)程倉庫
-- 將本地的master分支推送到origin主機(jī)的master分支。如果master不存在,則會(huì)被新建。
-- 用了參數(shù)-u之后,以后就可以直接用不帶參數(shù)的git pull從之前push到的分支來pull。
git push -u origin master
注:
在git push
推送遠(yuǎn)程倉庫的時(shí)候,可能會(huì)碰到如下錯(cuò)誤:
There is no tracking information for the current branch. Please specify which branch you want to merge with.
See git -pull(1) for details
git pull <remote> <branch>
If you wish to set tracking information for this branch you can do so with
git branch --set-upstream master origin/<branch>
當(dāng)時(shí)我在Gitlab
上建項(xiàng)目(公司的demo),提交代碼時(shí)沒有碰到這個(gè)問題,后來去GitHub
上建項(xiàng)目時(shí)就碰到了,但是通過提示的命令git branch --set-upstream master origin/<branch>
并沒有解決問題,后來參考了這篇博客才得以解決。具體我使用了以下命令:
此時(shí)如果origin的master分支上有一些本地沒有的提交,push會(huì)失敗.
所以解決的辦法是, 首先設(shè)定本地master的上游分支:
git branch --set-upstream-to=origin/master
然后pull:
git pull --rebase
最后再push:
git push
3. 更好的提交方式
假設(shè)當(dāng)前有如下分支:
*b1_zhangsan
b2_lisi
branch_20170903
master
場景如下:
假設(shè)branch_20170903
是當(dāng)前迭代的開發(fā)分支,b1_zhangsan
是員工張三的開發(fā)分支(從branch_20170903
上拉下來的),b2_lisi
是員工李四的開發(fā)分支,同樣也是從迭代分支上拉下來的。
當(dāng)開發(fā)過了一周時(shí)間,張三的需求開發(fā)完成了,需要往遠(yuǎn)程分支b1_zhangsan
上push
推送代碼,然后將開發(fā)分支b1_zhangsan
合并到branch_20170903
迭代分支上。
當(dāng)然,我們完全可以這種順序提交,即
git add .
git commit -m ""
git push origin b1_zhangsan
但是這樣做會(huì)有一個(gè)缺陷,當(dāng)你merge
到迭代分支branch_20170903
上時(shí),會(huì)有一定幾率的代碼沖突。這時(shí)候沖突就發(fā)生在了整個(gè)迭代分支上,如果別人在這個(gè)時(shí)候操作迭代分支,勢必會(huì)引起更多錯(cuò)誤,所以,如果將沖突放到本地,并解決之再提交merge
,風(fēng)險(xiǎn)會(huì)降低很多。
所以我推薦的merge
過程如下:
-- 首先本地倉庫檢出迭代分支
git checkout branch_20170903
-- 將遠(yuǎn)程迭代分支上的代碼拉下來
git pull
-- 再檢出張三的開發(fā)分支
git checkout b1_zhangsan
-- 與迭代分支merge
git merge branch_20170903
-- 如果有沖突,會(huì)提示CONFLICT(content): Merge conflict in xxx
-- 通過git diff可以查看沖突所在的位置,但不是很直觀
-- 最直接的方法的是去IDE里面全局搜索“<<<<”或者“>>>>”,因?yàn)橛袥_突勢必有這些符號(hào),可以更快定位到?jīng)_突位置
-- 在IDE里面解決沖突,再重新提交
git add .
git commit -m "解決沖突"
git push origin b1_zhangsan