Git 是目前世界上最先進(jìn)的分布式版本控制系統(tǒng)
-
Git 的歷史 Snip20180322_2.png
- 集中式 vs 分布式
集中式的版本庫(kù)是集中存放在中央服務(wù)器的。缺點(diǎn)是必須聯(lián)網(wǎng)。網(wǎng)速慢的情況就會(huì)讓人抓狂。
分布式意味著更方便,每個(gè)人的電腦都是一個(gè)版本庫(kù)。當(dāng)你工作的時(shí)候就不需要聯(lián)網(wǎng)了。
分布式也意味著更安全,某個(gè)電腦壞了并不影響其他人。但是集中式的中央服務(wù)器壞了,就影響了所有的人。
后面我們還會(huì)看到Git 強(qiáng)大的分支管理
- 其他版本控制系統(tǒng)
CVS(開源)
SVN(開源)
ClearCase(收費(fèi) IBM)
BitKeeper - Git 安裝
Mac 默認(rèn)安裝Git,所以使用 Mac 的同學(xué)就不需要費(fèi)事安裝了。
安裝之后輸入以下內(nèi)容,用于自報(bào)家門。
git config --global user.name "Your Name"
git config --global user.email "Your email"
創(chuàng)建git
本文的所有操作都在 Mac 上面
步驟一:選擇一個(gè)目錄
方法一:可以通過點(diǎn)擊右鍵->services->New Terminal at Floder
方法二:打開 Terminal,鍵入 cd 后面是目錄路徑
步驟二:鍵入 git init
就創(chuàng)建好了一個(gè) git 管理的倉(cāng)庫(kù)。這時(shí)目錄中會(huì)多出一個(gè) .git的目錄
把文件添加到版本庫(kù)
1.創(chuàng)建文件
2.鍵入git add fileName
這一步是把代碼從工作區(qū)提交到了緩存區(qū)
3.鍵入git commit -m "commit description"
這一步是把代碼從緩存區(qū)提交到了當(dāng)前分支
-m 后面是本次提交的說明
你可以簡(jiǎn)單理解為,需要提交的文件修改通通放到暫存區(qū),然后,一次性提交暫存區(qū)的所有修改。
git 命令釋義
HEAD指向的版本就是當(dāng)前版本
$ git status 查看當(dāng)前倉(cāng)庫(kù)的狀態(tài)
$ git diff 查看工作區(qū)和緩存區(qū)代碼的不同
$ git diff --cached 查看緩存區(qū)和分支代碼的不同
$ git diff Head -- <file>查看工作區(qū)和分支代碼的不同
$ git log 查看歷史提交記錄,以便確定要回退到哪個(gè)版本
$ git reflog可以查看命令歷史,以便確定要回到未來的哪個(gè)版本
HEAD^ 表示上一個(gè)版本,HEAD^^表示上上一個(gè)版本,以此類推
$ git reset --hard HEAD^ 回退上一個(gè)版本
$ git reset --hard commit_id 回退到指定版本
$ git rm 刪除
$ git checkout -- file用版本庫(kù)里的版本替換工作區(qū)的版本
遠(yuǎn)程倉(cāng)庫(kù)
Git 是分布式版本控制系統(tǒng),同一個(gè) Git 庫(kù)可以分布到不同的機(jī)器上。實(shí)現(xiàn)方法是有一個(gè)原始版本庫(kù),不同的機(jī)器可以 “克隆”這個(gè)庫(kù)。
Github 就是提供 Git 倉(cāng)庫(kù)托管服務(wù)的。只要注冊(cè)一個(gè) Github 賬號(hào),就可以擁有 Git 遠(yuǎn)程倉(cāng)庫(kù)。
第一步:創(chuàng)建 SSH Key
$ ssh-keygen -t rsa -C "youremail@example.com"
如果一切順利,可以在用戶主目錄下找到 .ssh目錄,目錄下有 id_rsa 和 id_rsa.pub兩個(gè)文件。
這兩個(gè)就是 SSH Key 的密鑰對(duì), id_rsa 是私鑰,不能泄露出去,id_rsa是公鑰,可以和別人分享。
第二步:登陸GitHub,打開“Account settings”,“SSH Keys”頁(yè)面
然后,點(diǎn)“Add SSH Key”,填上任意Title,在Key文本框里粘貼id_rsa.pub文件的內(nèi)容。
- 同步本地倉(cāng)庫(kù)和遠(yuǎn)程倉(cāng)庫(kù)
首先,登陸GitHub,然后,在右上角找到“Create a new repo”按鈕,創(chuàng)建一個(gè)新的倉(cāng)庫(kù)
現(xiàn)在,我們根據(jù)GitHub的提示,在本地的Git 倉(cāng)庫(kù)目錄下運(yùn)行命令,把本地代碼關(guān)聯(lián)到遠(yuǎn)程倉(cāng)庫(kù)
$ git remote add origin git@github.com:<yourusername>/<yourrepname>.git
添加后,遠(yuǎn)程庫(kù)的名字就是origin
下一步,就可以把本地代碼提交到遠(yuǎn)程
$ git push -u origin master
git push就是把當(dāng)前 master 推送到遠(yuǎn)程。
第一次推送加上了 -u 參數(shù),Git 不但會(huì)把本地的 master 推送到遠(yuǎn)程新的 master,還會(huì)把 master 進(jìn)行關(guān)聯(lián),在以后的推送或拉取時(shí)就可以簡(jiǎn)化命令
推送成功后,可以看到遠(yuǎn)程庫(kù)和本地庫(kù)已經(jīng)一模一樣。
從現(xiàn)在開始,只要本地做了提交,就可以通過命令把本地 master 的最新修改推送到遠(yuǎn)程,至此就擁有了真正的分布式版本庫(kù)
$ git push origin master
