Git和Gitee(碼云)基礎(chǔ)簡(jiǎn)單使用
一寝受、Git基本使用說明
Git也是一個(gè)版本控制系統(tǒng)荡灾,Git和傳統(tǒng)的svn最大的不同床估,在于版本控制的方式:svn必須從本地把文件提交到svn服務(wù)器遗契,如果沒有提交上去就沒有發(fā)生版本變化黍少,也就是說沒有網(wǎng)絡(luò)的話svn根本做不了版本控制管理蛋欣,而Git是本地進(jìn)行版本控制管理的航徙,所有的版本變化都在本地機(jī)器上進(jìn)行的,所以 Git單純做個(gè)人的版本控制的話是不需要依賴網(wǎng)絡(luò)以及類似svn服務(wù)器這樣的東西的陷虎。
這里你或許會(huì)有疑問到踏,要是多個(gè)人對(duì)同一個(gè)項(xiàng)目進(jìn)行操作,進(jìn)而在各自的電腦上產(chǎn)生了各自的一系列版本尚猿,那么在自己的電腦上如何才能看到其他人產(chǎn)生的版本內(nèi)容呢窝稿?——這里不用著急,因?yàn)檫@里涉及了 托管中心凿掂、團(tuán)隊(duì)成員間的協(xié)作 甚至是 跨團(tuán)隊(duì)之間的協(xié)作 問題伴榔。
1、安裝Git
Git的安裝比較簡(jiǎn)單和普通程序一樣庄萎,到官方網(wǎng)站找到自己的操作系統(tǒng)對(duì)應(yīng)的版本下載踪少,下載后雙擊安裝即可。
官方網(wǎng)站:https://git-scm.com/
2糠涛、Git的模型和基礎(chǔ)操作(本地操作)
Git的基本模型:整體分為三個(gè)部分:工作區(qū)援奢、暫存區(qū)和本地庫。
- 工作區(qū):工作區(qū)就是我們使用的的文件夾目錄忍捡,我們工作的時(shí)候就在里面新增或編輯文件萝究。
- 暫存區(qū):新增或編輯后的文件想要提交都要先放入到這個(gè)暫存區(qū)(設(shè)置暫存區(qū)的目的是什么呢,我也查了不少資料锉罐,主要是和git設(shè)計(jì)有關(guān)系帆竹,比如,我不想把修改的文件都提交脓规,就先把某幾個(gè)文件加入到暫存區(qū)栽连,然后提交上去。還有就是方便對(duì)比修改和還原侨舆,這個(gè)實(shí)現(xiàn)原理有兒復(fù)雜了秒紧。)
- 本地庫:從暫存區(qū)提交后都會(huì)放到本地庫,本地庫存放的是我們的一次次提交挨下,也就是一次次的版本熔恢。
Svn的提交(版本)變化:
Git的提交(版本)變化:
從圖中可以看出svn和git提交有本質(zhì)的區(qū)別,svn的提交是一次次的變化差異臭笆,而git的提交是一個(gè)個(gè)完整的快照(就是全部文件叙淌,這里的commit內(nèi)容其實(shí)指向所用文件的索引秤掌,文件都在本地,沒必要那么傻的自我復(fù)制一份鹰霍,只要保證不同內(nèi)容的文件都有一份就行了)闻鉴,所以從版本還原的速度上來看,git肯定遠(yuǎn)超svn茂洒,因?yàn)閟vn只能逐個(gè)版本依次對(duì)比還原文件內(nèi)容孟岛,還原的版本越早花費(fèi)的時(shí)間越久,而git只要根據(jù)提交版本里面的文件索引找到文件就行了根本不需要對(duì)比還原文件內(nèi)容督勺。
windows下使用模式渠羞,在 需要被Git版本管理的文件夾上 右擊后選擇 “Git Bash Here” 出現(xiàn)可以輸入git命令的界面(windows系統(tǒng)不能靠自己的命令行終端執(zhí)行g(shù)it命令,所以才有這一步驟)智哀。
第一步:初始化自己的身份次询,Git需要知道提交者的身份是誰,這樣才能知道每次提交都是誰提交的盏触。(一般一臺(tái)電腦上設(shè)置一次就可以了,更改身份除外)
git config --global user.name "名字"
git config --global user.email "郵箱"
第二步:將文件夾初始化块饺,生成暫存區(qū)和本地庫
git init
第三步:將文件夾中的內(nèi)容從工作區(qū)加入到暫存區(qū)
git add file1 file2 ... # 將文件添加到暫存區(qū)赞辩,多個(gè)文件空格隔開
git add dir # 將文件夾及其下面的內(nèi)容添加到暫存區(qū)
git add . # 將工作區(qū)內(nèi)的所有內(nèi)容添加到暫存區(qū)(我經(jīng)常使用)
第四步:將暫存區(qū)的內(nèi)容提交到本地庫,生成一次提交授艰,也就是一次版本變化
git commit -m "提交描述" # 將暫存區(qū)的內(nèi)容提交到本地庫(最常用)
git commit file1 file2 -m "提交描述" #將暫存區(qū)的某幾個(gè)文件提交到本地庫(注意這里提交除了file1 file2本書的索引還有其它項(xiàng)目文件的索引)
第五步:查看工作區(qū)辨嗽、暫存區(qū)的狀態(tài),主要是來檢測(cè)哪些東西沒提交淮腾。
git status
上面是本地最常用的步驟糟需,尤其是第三步和第四步。
除了上面的步驟谷朝,我們還有其它需求洲押,比如,
- 查看提交日志圆凰;
- 查看工作區(qū)和暫存區(qū)的區(qū)別杈帐;
- 查看暫存區(qū)和本地庫的區(qū)別;
- 回滾到某個(gè)版本等等专钉,在這里我們只需要等有需求的時(shí)候再查閱和使用這些命令挑童。
注意! 到目前為止跃须,我們都是在個(gè)人電腦上進(jìn)行操作站叼,還不能與他人進(jìn)行協(xié)作,別人看不到我們做的事情菇民,我們也看不到別人做的事情尽楔,如果僅僅是為了個(gè)人本地版本控制投储,那么上面的操作已經(jīng)非常滿足需求了。
3翔试、分支
Git也有分支的概念轻要,為什么要有分支的概念,本質(zhì)還是因?yàn)椴煌瑫r(shí)間有不同的版本需求 或 本身就是有不同版本的需求垦缅。打個(gè)比方:我要在我現(xiàn)有的項(xiàng)目上做出兩個(gè)擴(kuò)展項(xiàng)目冲泥,這時(shí)候就需要分別拉出兩個(gè)分支來實(shí)現(xiàn)目標(biāo)。
我們上面的操作其實(shí)產(chǎn)生了一個(gè)默認(rèn)分支壁涎,也就是master主干分支(正常需求比較單一且一個(gè)人玩的時(shí)候一個(gè)主干分支也夠玩了)凡恍。
- 查看分支,“*”星號(hào)代表目前所在的分支 git branch -v
- 創(chuàng)建分支怔球,git branch 分支名
- 切換分支嚼酝,git checkout 分支名
- 合并分支,git merge 分支名 把分支合并到當(dāng)前所在的分支竟坛,注意闽巩,在不同分支上修改同一個(gè)文件的同一行,合并兩個(gè)分支的時(shí)候就會(huì)發(fā)生沖突担汤。例如涎跨,master分支和branch1分支兩個(gè)分支都修改來同一個(gè)文件的同一行,在master中合并branch1的時(shí)候發(fā)生沖突崭歧。
git checkout master #切換到主分支
git merge branch1 #將branch1合并到主分支上
# 發(fā)生沖突后解決沖突隅很,這里需要熟悉vi編輯
git add xxx # 將沖突修改好的文件提交到暫存區(qū),這里需要注意率碾,沒有沖突的文件git是自動(dòng)合并的叔营,自動(dòng)合并的已經(jīng)在暫存區(qū)了不需要再次git add了
git commit -m "沖突解決備注" # 將沖突修改提交到本地庫,沖突解決完后可以通過所宰,git status 查看工作區(qū)和暫存區(qū)到狀態(tài)
二绒尊、托管中心(Gitee碼云——國內(nèi)常用)
正如開頭遇到的問題,要是多個(gè)人對(duì)同一個(gè)項(xiàng)目進(jìn)行操作仔粥,進(jìn)而在各自的電腦上產(chǎn)生了各自的一系列版本垒酬,那么在自己的電腦上如何才能看到其他人產(chǎn)生的版本內(nèi)容呢?——答案是件炉,需要一個(gè)統(tǒng)一的遠(yuǎn)程庫供大家來提交自己的版本和拉取別人的版本勘究。
這個(gè)存放遠(yuǎn)程倉庫的地方就是托管中心,常見的托管中心有Github斟冕、國內(nèi)的Gitee碼云和GitLab口糕,下面我們以碼云為例簡(jiǎn)述下遠(yuǎn)程庫的使用。
碼云地址:https://gitee.com/ 注冊(cè)賬號(hào)就不需要多說了磕蛇。
第一步:在托管中心新建倉庫景描,注意這里建的庫就是遠(yuǎn)程庫(圖中十办,倉庫右邊的+號(hào))。
倉庫建完后可以點(diǎn)擊倉庫進(jìn)去看到這樣的地址超棺,這里的地址就是遠(yuǎn)程倉庫的地址向族,我們這里只講https的使用方法。
第二步:將遠(yuǎn)程庫和本地庫進(jìn)行關(guān)聯(lián)
git remote add origin https://gitee.com/eatsleepsauce/yttstudy.git #這個(gè)命令的意思在本地備注了一個(gè)遠(yuǎn)程庫的地址 origin是遠(yuǎn)程地址的別名
git push -u origin "master" #把本地庫主干分支的內(nèi)容推送到 origin這個(gè)遠(yuǎn)程倉庫中棠绘,也就是將本地庫和遠(yuǎn)程庫關(guān)聯(lián)
注意:如果本地庫還沒有件相,可以通過 git clone 遠(yuǎn)程庫地址,直接在本地生成一個(gè)和遠(yuǎn)程庫有關(guān)聯(lián)的本地庫氧苍,也就是不需要執(zhí)行 git init 和 上面的關(guān)聯(lián)命令夜矗。
git clone origin https://gitee.com/eatsleepsauce/yttstudy.git
使用命令:git remote -v 可以查看本地備注了哪些遠(yuǎn)程庫地址
第三步:將本地庫推送到遠(yuǎn)程庫 push操作
git push -u origin "master" # 這個(gè)命令執(zhí)行時(shí)會(huì)讓輸入托管中心的賬號(hào)密碼,一般輸入保存就好了
git push origin #如果是主干分支推送可以直接簡(jiǎn)寫成這樣(我常用)
第四步:將遠(yuǎn)程庫的最新內(nèi)容拉到本地庫 pull操縱
#首先pull拉去到本地
git pull origin master # 遠(yuǎn)程庫別名 和 本地分支
git pull # 如果是主干分支pull可以直接簡(jiǎn)寫成這樣(我常用)
#如果有沖突让虐,解決沖突
三紊撕、托管中心Github(國際主流托管中心)
https://github.com/ 國內(nèi)訪問經(jīng)常不穩(wěn)定,最好有梯子赡突,我們常用的開源的項(xiàng)目都在這上面托管著对扶,比如大數(shù)據(jù)里面常用的那幾個(gè)。
四惭缰、團(tuán)隊(duì)成員間的協(xié)作
正常公司項(xiàng)目執(zhí)行時(shí)浪南,內(nèi)部團(tuán)隊(duì)一般會(huì)使用gitlab來搭建公司內(nèi)部的托管中心,而不是直接使用Gitee或Github从媚。不過在使用上不管是Gitee逞泄、Github還是Gitlab的區(qū)別并不算大患整。
五拜效、跨團(tuán)隊(duì)之間的協(xié)作
跨團(tuán)隊(duì)合作(跨公司),遠(yuǎn)程庫的托管中心可以使用github或者gitee(碼云)各谚。
第3步是團(tuán)隊(duì)B將團(tuán)隊(duì)A的在托管中心的項(xiàng)目單獨(dú)在托管中心復(fù)制一份紧憾,以后團(tuán)隊(duì)B都是基于自己復(fù)制的那份進(jìn)行版本控制。
第6步是團(tuán)隊(duì)B在托管中心發(fā)起的合并請(qǐng)求昌渤,請(qǐng)求團(tuán)隊(duì)A來把自己的那份拉過去合并赴穗,團(tuán)隊(duì)A發(fā)現(xiàn)請(qǐng)后就會(huì)審核并合并。當(dāng)然團(tuán)隊(duì)B也可以反向發(fā)起合并求膀息,然后自己把團(tuán)隊(duì)A的項(xiàng)目合并到自己的那份中(也就是更新)般眉。
第3步和第6步的操作都是在Github或Gitee上直接通過頁面功能操作的。