我為什么要用Git
常規(guī)開發(fā)中雕憔,我們經(jīng)常遇到的一個(gè)問(wèn)題就是而叼,當(dāng)團(tuán)隊(duì)協(xié)作開始的時(shí)候—比如小張和小王都是程序員身笤,他倆開發(fā)的是同一個(gè)系統(tǒng),小張負(fù)責(zé)寫A頁(yè)面葵陵,小王負(fù)責(zé)寫B(tài)頁(yè)面液荸,最后,他倆用u盤把代碼拷給其中一個(gè)人脱篙,再合并到一起娇钱。
這個(gè)操作猛一看,好像也沒什么問(wèn)題绊困。最后也得到了想要的結(jié)果文搂,網(wǎng)站開發(fā)完了。但是秤朗,如果我們想要把公司考評(píng)kpi和版本控制加入到小張和小王的工作流中细疚,增加一個(gè)審核環(huán)節(jié),讓每個(gè)版本的迭代都可以經(jīng)過(guò)開發(fā)—>測(cè)試—>發(fā)布川梅,就很困難了。<u>因?yàn)榇a并不在管理員手中然遏,而是在開發(fā)者手中贫途。</u>開發(fā)者A如果請(qǐng)假了,并且開發(fā)者B需要開發(fā)者A頁(yè)面上的部分邏輯待侵,他能做就只有等待丢早,因?yàn)樗枰戎_發(fā)者A用u盤把數(shù)據(jù)拷貝給他才能繼續(xù)開發(fā)。
于是Git誕生了,他的主要作用是記錄開發(fā)者的信息怨酝,并且提供多種代碼提交方式傀缩,還可以對(duì)版本進(jìn)行管理,關(guān)鍵時(shí)刻农猬,可以回滾代碼赡艰,防止問(wèn)題出現(xiàn)。尤其需要強(qiáng)調(diào)的斤葱,就是多人協(xié)作慷垮。Git就是為了多人協(xié)作開發(fā)一套代碼而誕生的,他里面的分支機(jī)制揍堕,讓多人開發(fā)時(shí)互不干涉料身,你可以輕松的拉取主干上的代碼跟自己本地匹配。最后開發(fā)完成的時(shí)候衩茸,再把分支合并入主干芹血,開發(fā)簡(jiǎn)直不要太輕松。
但是楞慈,Git只是一個(gè)提交方式幔烛,他自己是不能運(yùn)作的,我們還需要一個(gè)倉(cāng)庫(kù)抖部。就是存放代碼的地方说贝,現(xiàn)在我們能接觸到倉(cāng)庫(kù)平臺(tái)主要有g(shù)ithub,gitee和gitlab慎颗。在國(guó)內(nèi)我們主要是用gitee碼云乡恕,但是他的代碼是保存到云端。有部分有實(shí)力的公司俯萎,選擇使用gitlab把代碼倉(cāng)庫(kù)保存到自己的服務(wù)器上傲宜,也不失為一種選擇。
倉(cāng)庫(kù)
使用Git之前夫啊,需要我們先選擇用哪個(gè)倉(cāng)庫(kù)函卒,這里我們用gitee為例,因?yàn)榇蟛糠中⌒偷捻?xiàng)目撇眯,在云端管理是最方便的报嵌。
訪問(wèn)gitee.com,創(chuàng)建碼云賬號(hào)以后熊榛,點(diǎn)擊右上角的加號(hào)锚国,新建一個(gè)倉(cāng)庫(kù)。
倉(cāng)庫(kù)的作用就是儲(chǔ)存代碼玄坦, 每個(gè)你項(xiàng)目的開發(fā)者都可以訪問(wèn)倉(cāng)庫(kù)查看現(xiàn)在的開發(fā)進(jìn)度血筑。這里注意绘沉,如果你選擇的是公開倉(cāng)庫(kù),非你項(xiàng)目的開發(fā)者也能看到你的項(xiàng)目豺总,你的項(xiàng)目也就變成了開源項(xiàng)目车伞。
這里多說(shuō)一句,其實(shí)喻喳,編程的本質(zhì)就是分享另玖,如果每個(gè)人都把自己的技術(shù)私有化,那么大家都不用進(jìn)步了沸枯,就是因?yàn)橛辛死鏐ootstrap日矫,Spring Framework等等這種開源框架,我們的代碼世界才會(huì)編的如此豐富多彩绑榴。
倉(cāng)庫(kù)創(chuàng)建完畢以后哪轿,你就能看到里面的文件了,如果你是新項(xiàng)目翔怎,里面應(yīng)該只有一個(gè)README.md窃诉。接下來(lái),我們需要獲取這個(gè)倉(cāng)庫(kù)的地址赤套,就好比你的百度網(wǎng)盤一樣飘痛,都有一個(gè)http路徑。
一般情況下容握,倉(cāng)庫(kù)提供兩種方式宣脉,一種是https,一種是ssh剔氏。https下載比較方便塑猖,但是需要每次都輸入賬號(hào)和密碼。ssh則需要你通過(guò)git生成一個(gè)密鑰谈跛,密鑰只需要生成一次
好處就是不用輸入賬號(hào)密碼了羊苟,如果你是項(xiàng)目的開發(fā)者,可以直接進(jìn)行操作感憾。
好的蜡励,獲取這個(gè)地址以后,關(guān)閉頁(yè)面阻桅,咱們開始安裝Git凉倚。
Git安裝
在git-scm.com可以下載最新版的git。下載安裝以后嫂沉,在你本地新建一個(gè)web文件夾稽寒,點(diǎn)擊右鍵。
此時(shí)你的右鍵菜單中已經(jīng)有了Git GUI here和Git Bash here兩個(gè)新的選項(xiàng)输瓜,點(diǎn)擊第二個(gè)
會(huì)看到這個(gè)界面。
我們接下來(lái)就要在這里輸入Git命令。有些小伙伴尤揣,一看到小黑窗就蒙了搔啊,因?yàn)檫@個(gè)操作沒有圖形化,只有命令行北戏。
不用擔(dān)心负芋,龍哥會(huì)全程帶你操作,并且每一步都會(huì)幫你解答你的困惑嗜愈。
首先輸入
git clone "你的項(xiàng)目地址"
你的項(xiàng)目地址就是旧蛾,倉(cāng)庫(kù)最后克隆/下載,里面復(fù)制的地址蠕嫁。
注意锨天,這里會(huì)出現(xiàn)兩種情況,第一種剃毒,你使用的是https方式病袄,到這里會(huì)讓你輸入賬號(hào)密碼。你直接輸入就可以進(jìn)入下載環(huán)節(jié)赘阀。第二種益缠,你使用的是SSH方式,你此時(shí)需要在本地生成一個(gè)密鑰基公。
新手同學(xué)建議使用https方式幅慌。
如果你使用了SSH也不要慌張。按照一下步驟進(jìn)行轰豆。
先添加全局變量
git config --global user.name "你的用戶名"
git config --global user.email "你的郵箱地址"
然后輸入
ssh-keygen -t rsa -C "你的郵箱地址"
輸入完畢以后胰伍,會(huì)出現(xiàn)一大堆代碼,復(fù)制這個(gè)到你的倉(cāng)庫(kù)SSH管理中即可秒咨。
因?yàn)槊考移脚_(tái)的SSH管理位置都不同喇辽,這里就不做解釋了,但通常是在個(gè)人設(shè)置中雨席,稍微找一下就能找到菩咨。
當(dāng)上面這一步完成以后,你已經(jīng)clone了現(xiàn)故到你的本地陡厘。
使用你的開發(fā)工具打開這個(gè)目錄
可以發(fā)現(xiàn)里面只有一個(gè)文件README.md抽米。這里已經(jīng)跟云端保持一致了。
接下來(lái)我們創(chuàng)建一個(gè)html文件糙置。
隨便寫點(diǎn)東西云茸,我們開始進(jìn)入提交步驟。
這里要注意一點(diǎn)谤饭,就是倉(cāng)庫(kù)默認(rèn)只有一個(gè)master分支标捺,分支的概念你可以理解就是最后要發(fā)布的代碼懊纳,但是,我們作為項(xiàng)目的一份子亡容,不可能直接一次就開發(fā)完成整個(gè)項(xiàng)目了嗤疯,我們肯定是開發(fā)了其中的一個(gè)小部分,這個(gè)部分需要先經(jīng)過(guò)測(cè)試闺兢,才能提交到整體中茂缚。
所以這里我們先創(chuàng)建一個(gè)自己的分支。
輸入:
git branch -a
這一步的目的是列出所有分支屋谭,可以發(fā)現(xiàn)脚囊,現(xiàn)在只有一個(gè)master分支。
然后輸入
git branch test
git checkout test
創(chuàng)建一個(gè)新的test分支桐磁,然后切換到這個(gè)分支上悔耘。
再次列出分支列表,可以發(fā)現(xiàn)我們已經(jīng)切換到test上了所意。
此時(shí)淮逊,我們就可以開始提交我們本地的代碼了。
輸入:
git add .
git commit -m "version1.0.0"
git push testgit push --set-upstream origin test
這三句話的意思是扶踊,選擇項(xiàng)目中的全部文件泄鹏,添加更新說(shuō)明,推送到遠(yuǎn)程分支并綁定秧耗。
其實(shí)第三句話只需要輸入一次备籽,下次你直接輸入git push即可。
這里分井,有一種特殊情況车猬,就是,你跟你的同事尺锚,開發(fā)的是同一個(gè)分支珠闰。此時(shí),你需要先執(zhí)行
git pull
然后再推送你的新代碼瘫辩,否則會(huì)報(bào)沖突伏嗜。
好了。更新代碼并推送就講完了伐厌。最后咱們?cè)僦v一下分支的合并承绸。比如,現(xiàn)在我的頁(yè)面開發(fā)并測(cè)試完了挣轨,我需要合并到主干上军熏,我應(yīng)該怎么做呢?卷扮?
首先切換到master分支
git checkout master
git merge test
這樣兩個(gè)分支就合并完畢啦荡澎!
審核分支合并請(qǐng)求
上面的分支合并有一個(gè)小小的問(wèn)題就是均践,如果你是往master分支上去合并,你需要先確定一下master分支是不是一個(gè)受保護(hù)的分支摩幔,如果是浊猾,你需要到倉(cāng)庫(kù)中,你自己的提交那塊热鞍,去發(fā)起一個(gè)合并申請(qǐng),
發(fā)起申請(qǐng)后編寫你的更新信息衔彻,如果有沖突薇宠,也可以再這里解決沖突的代碼
此時(shí),管理員可以看到你這個(gè)請(qǐng)求
如果此時(shí)管理員點(diǎn)擊merge艰额,你的分支就會(huì)被合并入master
好了澄港,龍哥已經(jīng)帶你粗略的感受了一遍git的提交發(fā)布再到審核管理的流程。不足之處柄沮,還請(qǐng)見諒回梧,如果你喜歡龍哥的文章,請(qǐng)點(diǎn)贊關(guān)注收藏吧祖搓!