詳細(xì)git命令,請(qǐng)參考:git教程
1. 倉(cāng)庫(kù)初配置
-- 本地倉(cāng)庫(kù)初始化
git init
-- 連接遠(yuǎn)程倉(cāng)庫(kù)
git remote add origin gitlab倉(cāng)庫(kù)地址
2. 提交代碼
-- 提交代碼前最好查看一下本地代碼狀態(tài)
git status
-- 將新建文件添加到版本控制中
git add .
git add file
-- 提交代碼
git commit -m "提交描述"
-- 推送代碼到遠(yuǎn)程倉(cāng)庫(kù)
-- 將本地的master分支推送到origin主機(jī)的master分支。如果master不存在,則會(huì)被新建。
-- 用了參數(shù)-u之后,以后就可以直接用不帶參數(shù)的git pull從之前push到的分支來(lái)pull。
git push -u origin master
注:
在git push推送遠(yuǎn)程倉(cāng)庫(kù)的時(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í)沒(méi)有碰到這個(gè)問(wèn)題,后來(lái)去GitHub上建項(xiàng)目時(shí)就碰到了,但是通過(guò)提示的命令git branch --set-upstream master origin/<branch>并沒(méi)有解決問(wèn)題,后來(lái)參考了這篇博客才得以解決。具體我使用了以下命令:
此時(shí)如果origin的master分支上有一些本地沒(méi)有的提交,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
場(chǎng)景如下:
假設(shè)branch_20170903是當(dāng)前迭代的開發(fā)分支,b1_zhangsan是員工張三的開發(fā)分支(從branch_20170903上拉下來(lái)的),b2_lisi是員工李四的開發(fā)分支,同樣也是從迭代分支上拉下來(lái)的。
當(dāng)開發(fā)過(guò)了一周時(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í)候操作迭代分支,勢(shì)必會(huì)引起更多錯(cuò)誤,所以,如果將沖突放到本地,并解決之再提交merge,風(fēng)險(xiǎn)會(huì)降低很多。
所以我推薦的merge過(guò)程如下:
-- 首先本地倉(cāng)庫(kù)檢出迭代分支
git checkout branch_20170903
-- 將遠(yuǎn)程迭代分支上的代碼拉下來(lái)
git pull
-- 再檢出張三的開發(fā)分支
git checkout b1_zhangsan
-- 與迭代分支merge
git merge branch_20170903
-- 如果有沖突,會(huì)提示CONFLICT(content): Merge conflict in xxx
-- 通過(guò)git diff可以查看沖突所在的位置,但不是很直觀
-- 最直接的方法的是去IDE里面全局搜索“<<<<”或者“>>>>”,因?yàn)橛袥_突勢(shì)必有這些符號(hào),可以更快定位到?jīng)_突位置
-- 在IDE里面解決沖突,再重新提交
git add .
git commit -m "解決沖突"
git push origin b1_zhangsan