style: candy
目錄
1 GitHub 和 Git 的前世今緣
你可能會(huì)問(wèn)學(xué)習(xí) GitHub 和 Git 有什么關(guān)系嗎?首先 GitHub 的功能本身就是基于 Git 來(lái)實(shí)現(xiàn)×坷ⅲ現(xiàn)在的問(wèn)題是 Git 是什么袋坑?Git 是一個(gè)開(kāi)源的分布式版本控制系統(tǒng),簡(jiǎn)單的來(lái)說(shuō)就是一個(gè)強(qiáng)大的版本管理工具橄抹,GitHub 因?yàn)榧闪?Git,所以具有版本管理的功能美尸,在加上自身的社區(qū)功能鞠柄,如訂閱,討論械馆,關(guān)注胖眷,分享代碼片段等。Git 是 Linux 之父—— Linus 兩周周寫(xiě)成的(在此默默崇拜大牛5秒鐘)霹崎,最初是為了幫助管理 Linux 內(nèi)核開(kāi)發(fā)而設(shè)計(jì)的版本控制軟件珊搀,這是一款開(kāi)源的軟件。(在這里說(shuō)一下仿畸,開(kāi)源的意思就是開(kāi)放源代碼食棕,用戶可以在遵守項(xiàng)目協(xié)議的基礎(chǔ)上使用和修改源代碼朗和。)版本控制工具可不止 Git,還有 SVN 集中式的版本管理簿晓。但與 SVN 相比眶拉,Git 的優(yōu)勢(shì)是分布式,SVN 是把項(xiàng)目托管到一個(gè)中央服務(wù)器上憔儿,而 Git 則是分布在每個(gè)使用者的電腦上的忆植,每個(gè)使用者都有項(xiàng)目的所有信息。使用 Git 可以在本地操作 GitHub 上的項(xiàng)目谒臼,增刪改朝刊,操作完了,在推送到 GitHub 上保存蜈缤。
2 Git 的下載安裝
以 windows 環(huán)境下安裝為例拾氓,Linux 和 Mac 系統(tǒng)請(qǐng)自行查找 Git 安裝資料
-
2.1 Git 下載
如果你的下載速度較慢,也可以選擇去軟件應(yīng)用中心下載底哥,這里也推薦一個(gè)百度軟件下載中心咙鞍,但里面的軟件不一定是最新的,還是建議在官網(wǎng)上下載的趾徽。Git百度軟件中心下載
-
2.2 Git 安裝
在 windows 下安裝 Git 和安裝普通軟件一樣续滋,你可以更改安裝目錄,其他的可以按照默認(rèn)的安裝選項(xiàng)孵奶,直接點(diǎn)下一步直到安裝完成即可疲酌,安裝完成后鼠標(biāo)的右鍵功能表中會(huì)增加兩個(gè)新的選項(xiàng)。
3 Git 的初始配置
-
3.1 查看安裝的 Git 的版本
可以在運(yùn)行窗口中輸入 cmd 進(jìn)入命令提示符窗口了袁,然后輸入 git --version
回車即可顯示所安裝的 git 版本朗恳,也可以進(jìn)入鼠標(biāo)右鍵的 Git Bash Here 選項(xiàng)進(jìn)入 Git 命令行窗口,輸入 git --version
命令來(lái)查看版本信息早像。
-
3.2 查看 Git 的初始環(huán)境變量
在 Git Bash 窗口中輸入 git config --global -l //分條查看初始配置信息
-
3.3 配置 Git 的工作環(huán)境變量
下面這些環(huán)境變量的設(shè)置決定了 Git 在各個(gè)環(huán)節(jié)具體的工作方式和行為僻肖。比如說(shuō)配置使用 Git 的用戶信息,當(dāng)然不配置也是可以的卢鹦。
在 Git Bash 窗口中輸入 git config --global user.name "wenshixin" //配置用戶名
git config --global user.email "wenshixin23.@163.com" //配置郵箱名
臀脏,再次查看Git的配置信息。
另外還可以配置差異檢測(cè)工具和 Git 默認(rèn)的文本編輯器冀自,一般 Git 默認(rèn)的是 Vi 或者 Vim 編輯器揉稚,這個(gè)配置不常用,這里就不多演示熬粗,還有一個(gè)地方是 Git 命令行窗口輸入的配置搀玖,一個(gè)是輸入光標(biāo)的設(shè)置,一個(gè)是在 Git 里中文顯示不正常的設(shè)置驻呐,鼠標(biāo)右鍵點(diǎn)擊窗體標(biāo)題欄灌诅。
中文亂碼配置問(wèn)題
如下圖所示芳来,在 Git 里中文是用八進(jìn)制編碼來(lái)顯示的。
通過(guò)在 Git 命令行中輸入 git config --global core.quotepath false
猜拾,來(lái)修改 Git 的默認(rèn)文件編碼即舌,使中文文件名正常顯示,下圖為修改過(guò)的中文顯示挎袜。
4 Git 工作流程
-
4.1 三個(gè)區(qū)域
工作區(qū)顽聂,暫存區(qū),本地版本庫(kù)盯仪。
工作區(qū)(workspace):就是你實(shí)際寫(xiě)項(xiàng)目的地方紊搪,比如可見(jiàn)的文件夾以及文件
暫存區(qū)(stage/index):工作區(qū)和本地版本庫(kù)之間的區(qū)域,暫存區(qū)承擔(dān)著工作區(qū)和版本庫(kù)之間的“通信”任務(wù)全景,這樣的設(shè)計(jì)為版本控制帶來(lái)更大的靈活性耀石,工作區(qū)的內(nèi)容先放到暫存區(qū),暫存區(qū)會(huì)生成索引蚪燕,或者稱為是目錄樹(shù)來(lái)記錄工作區(qū)的修改娶牌。由工作區(qū)到暫存區(qū)只是把工作區(qū)的內(nèi)容做了“跟蹤監(jiān)視”奔浅,并沒(méi)有為其建立版本控制的內(nèi)容馆纳。
本地版本庫(kù)(local repository):暫存區(qū)的內(nèi)容提交到本地的版本庫(kù)中,版本庫(kù)有一個(gè) ./git 的隱藏文件夾來(lái)管理這個(gè)項(xiàng)目的每次提交汹桦,至此鲁驶,你的項(xiàng)目才是真正的被“管理”起來(lái)了,而不只是之前的“監(jiān)控”了舞骆。
關(guān)于 Git 的各種命令钥弯,在《親吻GitHub》中會(huì)詳細(xì)說(shuō)到。
-
4.2 四種狀態(tài)
未跟蹤狀態(tài)(untracked):文件還只放在工作區(qū)督禽,還沒(méi)有放到暫存區(qū)進(jìn)行跟蹤和監(jiān)視脆霎。
未修改狀態(tài)(unmodified):沒(méi)有進(jìn)行編輯的空白文件
修改狀態(tài)(modified):對(duì)空白文件進(jìn)行了編輯
暫存狀態(tài)(staged):文件到暫存區(qū)的后即為暫存狀態(tài)
-
4.3 Git 的各個(gè)區(qū)之間的工作流程
這三個(gè)區(qū)域構(gòu)成一個(gè)循環(huán)的工作流程,工作區(qū)(workspace)的內(nèi)容添加(add)到暫存區(qū)(stage/index),暫存區(qū)的內(nèi)容再提交到本地版本控制倉(cāng)庫(kù)(local repository)狈惫,工作區(qū)又可以切換(checkout)到版本的某一分支睛蛛。
5 Git 牽手 GitHub
之前說(shuō)到可以在 GitHub 上創(chuàng)建倉(cāng)庫(kù),這個(gè)倉(cāng)庫(kù)我們稱為是遠(yuǎn)程倉(cāng)庫(kù)(remote repository)胧谈,這和我們剛才說(shuō)到的本地倉(cāng)庫(kù)又有什么關(guān)系呢忆肾?從上面的圖中我們可以看到這個(gè)遠(yuǎn)程倉(cāng)庫(kù)有和本地倉(cāng)庫(kù)和工作區(qū)有聯(lián)系。
我們通過(guò)創(chuàng)建本地倉(cāng)庫(kù)對(duì)我們的項(xiàng)目施行了管理控制菱肖,但這個(gè)倉(cāng)庫(kù)畢竟是我們硬盤上的文件客冈,還是會(huì)有被意外刪除和丟失的可能,所以放到遠(yuǎn)程倉(cāng)庫(kù)就很有必要稳强,放在 GitHub 上安全一些场仲,但是有時(shí)候在國(guó)內(nèi)訪問(wèn)會(huì)有些慢和悦。說(shuō)明一點(diǎn),遠(yuǎn)程倉(cāng)庫(kù)也不止 GitHub 一家渠缕,國(guó)內(nèi)也有 碼云摹闽,CSDN,但這些在名氣上都比不上 GitHub褐健,畢竟 GitHub 是全球性的付鹿,這些代碼托管平臺(tái)和 GitHub 在使用上其實(shí)相差不大,學(xué)會(huì) GitHub蚜迅,其他平臺(tái)的使用都是小兒科舵匾,筆者也使用了碼云這個(gè)托管平臺(tái),因?yàn)橛袝r(shí)候 GitHub 真的挺慢谁不。另外遠(yuǎn)程倉(cāng)庫(kù)也提高了我們項(xiàng)目的可攜帶性坐梯,只要在一個(gè)連上網(wǎng)的環(huán)境,我們就可以從遠(yuǎn)程倉(cāng)庫(kù)拷貝到本地計(jì)算機(jī)硬盤上刹帕,這樣也便于分享自己的開(kāi)源項(xiàng)目吵血,團(tuán)隊(duì)合作會(huì)在《相守GitHub》中說(shuō)到的。
知道了這些偷溺,我們?cè)賮?lái)說(shuō)說(shuō) Git 和 GitHub 是如何“牽手”的蹋辅。本地倉(cāng)庫(kù)中的內(nèi)容可以推(push)到遠(yuǎn)程倉(cāng)庫(kù),當(dāng)然這里需要先而讓本地倉(cāng)庫(kù)和遠(yuǎn)程倉(cāng)庫(kù)建立聯(lián)系挫掏,具體的操作侦另,在《親吻GitHub》中會(huì)說(shuō)。在本地你可以把遠(yuǎn)程倉(cāng)庫(kù)的內(nèi)容直接拉(pull)到本地工作區(qū)尉共,或者是獲劝怠(fetch)和克隆(clone)遠(yuǎn)程倉(cāng)庫(kù)中的內(nèi)容到本地倉(cāng)庫(kù)中袄友,這兩種方式的區(qū)別殿托,在《相守GitHub》中會(huì)說(shuō)。