由于已經(jīng)對(duì)Git使用比較熟悉了,此篇關(guān)于git分支和版本的的管理將不會(huì)詳細(xì)記錄每一個(gè)細(xì)節(jié)。如果你還不熟悉git,請(qǐng)先參看:
[1] http://blog.csdn.net/xiahouzuoxin/article/details/9393119
[2] http://blog.csdn.net/xiahouzuoxin/article/details/9398629
[3] http://blog.csdn.net/xiahouzuoxin/article/details/18076043
創(chuàng)建分支,你可以使用
git branch dev
這就創(chuàng)建了一個(gè)dev(development之意),更好的,選擇使用下面的方法創(chuàng)建兩個(gè)分支——dev,創(chuàng)建后會(huì)自動(dòng)切換到新創(chuàng)建的分支,
git checkout -b dev
要切回master分支怎么辦?使用
git checkout master
當(dāng)然你也可以使用
git checkout dev
再次切換到dev分支。
好了,現(xiàn)在有兩個(gè)分支:master和dev了。比如切來(lái)切去,突然暫停手下的活要先擼一把,擼完回過(guò)頭不知道現(xiàn)在在哪個(gè)分支了,怎么辦?
git branch
搞定,git branch可以查看當(dāng)前已有的分支信息,并在將當(dāng)前所在分支高亮,當(dāng)前分支前還有個(gè)*號(hào)。
某天要調(diào)試某個(gè)新算法,又不能保證能調(diào)好,又怕打亂了原有的程序,怎么辦?建一個(gè)新分支:
git checkout -b debug
在debug分支中慢慢玩,master分支和dev分支毫不受影響。這時(shí)就有兩種情況:
git branch -d debug
git checkout master // 切換到mastergit merge debug // 合并debug到master
這時(shí)如果你很幸運(yùn),直接合并成功。悲傷的事情總是時(shí)有發(fā)生,“合并發(fā)生沖突”是常有的事,因此一旦出現(xiàn)類似下面的提示
CONFLICT (content): Merge conflict in ...Automatic merge failed; fix conflicts and then commit the result.
就得自己動(dòng)手解決沖突了,git會(huì)用
<<<<<<<HEAD master原有的內(nèi)容======= debug分支中沖突的內(nèi)容>>>>>>>debug
這樣的格式提醒你,只要修改保留實(shí)際需要的內(nèi)容后即可解決沖突,解決沖突后就可以執(zhí)行g(shù)it commit。
好了,我們合并了master和debug,做IT的人總會(huì)偷個(gè)腥,想看看git是怎么記錄合并的,沒(méi)問(wèn)題,
git log --graph --pretty=oneline --abbrev-commit
就可以直接看到分支合并的過(guò)程。我這有個(gè)大點(diǎn)的工程合并效果的例子,
最后,反正debug我玩完了,刪除debug分支
git branch -d debug
我們所有的開(kāi)發(fā)工作都在dev上進(jìn)行,一旦有了大的突破,則合并到master。
如果不在dev,切換到dev,
git branchgit checkout dev
還記得我們之前推送master分支到遠(yuǎn)程origin嗎?
git push -u origin master
推送dev也是一樣的,只要指定分支名為dev就可以了,
git push -u origin dev
git clone git@github.com:....
這是,你用git branch看看,這只是clone了master分支,dev呢?這可是費(fèi)勁苦心,要在同學(xué)A的dev分支上開(kāi)發(fā),就必須創(chuàng)建遠(yuǎn)程的dev分支到本地
git checkout -b dev origin/dev
再用git branch看看?有了吧。
git checkout dev git pull origin dev
git pull origin dev
可能出現(xiàn)沖突,解決后才能進(jìn)行下一次的提交。
極少的場(chǎng)合,要不就是老板的老婆月經(jīng)亂了,要不就是。。。哎,不說(shuō)了,非要?jiǎng)h除遠(yuǎn)程dev分支,也是有辦法的,
git push oringin :dev
哇,第一個(gè)里程碑式的突破,有木有,這時(shí)你可小小的慶幸一下,打個(gè)標(biāo)簽(Tag),表示這是個(gè)可靠的可發(fā)布版本,
git tag -a v1.0 -m "第一個(gè)里程碑的突破"
當(dāng)然,注釋別向上面一樣("第一個(gè)里程碑的突破")寫(xiě)得那么沒(méi)有營(yíng)養(yǎng)。起個(gè)好名字很重要。默認(rèn)的標(biāo)簽將打在最新的commit上。
查看打了哪些標(biāo)簽使用
git tag
查看某個(gè)標(biāo)簽的信息用
git show v1.0
好了,好馬也有失前蹄的時(shí)候,標(biāo)簽打錯(cuò)也是正常的,
git tag -d v1.0
果斷刪了v1.0標(biāo)簽。
我想要把v1.0推送到遠(yuǎn)程,
git push origin v1.0
把所有的標(biāo)簽一次推送到遠(yuǎn)程更爽,
git push origin --tags
刪除遠(yuǎn)程的標(biāo)簽,你可以到github上刪除,也可以,
git tag -d v1.0
git push origin :refs/tags/v1.0
好了,告一段落了,接著就是使用git策馬奔騰吧!
[1] 廖雪峰Git教程
聯(lián)系客服