Git 是一個(gè)免費(fèi)開(kāi)源的分布式版本控制系統(tǒng),它也一個(gè)基于內(nèi)容尋址的存儲(chǔ)系統(tǒng)。 Git 是由 Linux 的創(chuàng)造者 Linus Torvalds。 現(xiàn)如今Git已成為行業(yè)標(biāo)準(zhǔn)版本控制供給
一 git本地操作
1. git安裝
Windows下可安裝gitbash
2. 配置 Git 使用 git config 此為創(chuàng)建 Git 倉(cāng)庫(kù)前必須完成的配置。
git config --global user.name "Li Xinyang"
git config --global user.email "lixinyang1026@gmail.com"
3. 初始化倉(cāng)庫(kù)
git init [path]
git init [path] --bare
在初始化倉(cāng)庫(kù)后會(huì)出現(xiàn)一個(gè)隱藏的目錄 .git 其中包括了所有的當(dāng)前倉(cāng)庫(kù)的版本信息和本地設(shè)置文件(.git/config)。
4. 查詢狀態(tài)
git status 此命令可以幫助開(kāi)發(fā)者在下面三對(duì)關(guān)系中找出文件狀態(tài)的變化。

形象的解釋如下:

5. 添加文件到暫存區(qū)(同時(shí)跟蹤文件)git add

6. 刪除文件 git remove
git rm //從暫存區(qū)和工作區(qū)目錄中刪除
7. 提交版本記錄 git commit
git commit 可以根據(jù)暫存區(qū)的內(nèi)容創(chuàng)建一個(gè)提交目錄

直接提交工作區(qū)的內(nèi)容git commit -a -m 'message',工作中不建議這樣操作。
8. git log 可以用來(lái)顯示提交是記錄信息。
包括:
- 提交編號(hào) SHA-1 編碼的 HASH 標(biāo)示符
- git-config 配置的提交者信息
- 提交日期
- 提交描述信息
9. 顯示版本差異 git diff(difference)
git diff 顯示工作目錄與暫存區(qū)的差異
10. 命令總結(jié)

二 github和git遠(yuǎn)程倉(cāng)庫(kù)
遠(yuǎn)程操作可以將本地倉(cāng)庫(kù)推送至遠(yuǎn)程倉(cāng)庫(kù)服務(wù)器。Git 支持許多主流的通信協(xié)議,其中包括 Local、HTTP、SSH、還有Git。服務(wù)器只應(yīng)該是作為同步之用(被動(dòng)接受既可)
由于你的本地Git倉(cāng)庫(kù)和GitHub倉(cāng)庫(kù)之間的傳輸是通過(guò)SSH加密的,所以,需要一點(diǎn)設(shè)置:
- 第1步:創(chuàng)建SSH Key。在用戶主目錄下,看看有沒(méi)有.ssh目錄,如果有,再看看這個(gè)目錄下有沒(méi)有id_rsa
和id_rsa.pub這兩個(gè)文件,如果已經(jīng)有了,可直接跳到下一步。如果沒(méi)有,打開(kāi)Shell(Windows下打開(kāi)Git Bash),創(chuàng)建SSH Key:
$ ssh-keygen -t rsa -C "youremail@example.com"
你需要把郵件地址換成你自己的郵件地址,然后一路回車(chē),使用默認(rèn)值即可,由于這個(gè)Key也不是用于軍事目的,所以也無(wú)需設(shè)置密碼。
如果一切順利的話,可以在用戶主目錄里找到.ssh目錄,里面有id_rsa和id_rsa.pub兩個(gè)文件,這兩個(gè)就是SSH Key的秘鑰對(duì),id_rsa是私鑰,不能泄露出去,id_rsa.pub是公鑰,可以放心地告訴任何人。
- 登陸GitHub,打開(kāi)“Account settings”,“SSH Keys”頁(yè)面:
然后,點(diǎn)“Add SSH Key”,填上任意Title,在Key文本框里粘貼id_rsa.pub文件的內(nèi)容,點(diǎn)“Add Key”,你就應(yīng)該看到已經(jīng)添加的Key:
為什么GitHub需要SSH Key呢?因?yàn)镚itHub需要識(shí)別出你推送的提交確實(shí)是你推送的,而不是別人冒充的,而Git支持SSH協(xié)議,所以,GitHub只要知道了你的公鑰,就可以確認(rèn)只有你自己才能推送。
1. 用命令git clone克隆一個(gè)本地庫(kù):
$ git clone git@github.com:michaelliao/gitskills.git
Cloning into 'gitskills'...
remote: Counting objects:
3, done.remote: Total 3 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (3/3), done.
$ cd gitskills
$ lsREADME.md
注意把Git庫(kù)的地址換成你自己的.
2. 推送 git push
git push 可以將當(dāng)期的全部版本提交提交推送至遠(yuǎn)程倉(cāng)庫(kù),其完成了提交歷史的完全不復(fù)制并同時(shí)移動(dòng)復(fù)制版本的 HEAD 與 Branch。
$ git push -u origin master
把本地庫(kù)的內(nèi)容推送到遠(yuǎn)程,用git push命令,實(shí)際上是把當(dāng)前分支master推送到遠(yuǎn)程。
git的常用操作大致如上,更多的操作可以日后學(xué)習(xí)。