1.初步了解Git
Git是一個(gè)開(kāi)源的分布式版本控制系統(tǒng)斯撮,可以有效俊柔、高速地處理從很小到非常大的項(xiàng)目版本管理眷射。 [1] Git 是 Linus Torvalds 為了幫助管理 Linux 內(nèi)核開(kāi)發(fā)而開(kāi)發(fā)的一個(gè)開(kāi)放源碼的版本控制軟件梗醇。
1.1Git的功能特性:
從一般開(kāi)發(fā)者的角度來(lái)看冶匹,git有以下功能:
1、從服務(wù)器上克隆完整的Git倉(cāng)庫(kù)(包括代碼和版本信息)到單機(jī)上虽风。
2棒口、在自己的機(jī)器上根據(jù)不同的開(kāi)發(fā)目的,創(chuàng)建分支辜膝,修改代碼无牵。
3、在單機(jī)上自己創(chuàng)建的分支上提交代碼厂抖。
4茎毁、在單機(jī)上合并分支。
5验游、把服務(wù)器上最新版的代碼fetch下來(lái)充岛,然后跟自己的主分支合并保檐。
6、生成補(bǔ)洞薰!(patch)夜只,把補(bǔ)丁發(fā)送給主開(kāi)發(fā)者。
7蒜魄、看主開(kāi)發(fā)者的反饋扔亥,如果主開(kāi)發(fā)者發(fā)現(xiàn)兩個(gè)一般開(kāi)發(fā)者之間有沖突(他們之間可以合作解決的沖突),就會(huì)要求他們先解決沖突谈为,然后再由其中一個(gè)人提交旅挤。如果主開(kāi)發(fā)者可以自己解決,或者沒(méi)有沖突伞鲫,就通過(guò)粘茄。
8、一般開(kāi)發(fā)者之間解決沖突的方法秕脓,開(kāi)發(fā)者之間可以使用pull 命令解決沖突柒瓣,解決完沖突之后再向主開(kāi)發(fā)者提交補(bǔ)丁。
從主開(kāi)發(fā)者的角度(假設(shè)主開(kāi)發(fā)者不用開(kāi)發(fā)代碼)看吠架,git有以下功能:
1芙贫、查看郵件或者通過(guò)其它方式查看一般開(kāi)發(fā)者的提交狀態(tài)。
2傍药、打上補(bǔ)丁磺平,解決沖突(可以自己解決,也可以要求開(kāi)發(fā)者之間解決以后再重新提交拐辽,如果是開(kāi)源項(xiàng)目拣挪,還要決定哪些補(bǔ)丁有用,哪些不用)俱诸。
3媒吗、向公共服務(wù)器提交結(jié)果,然后通知所有開(kāi)發(fā)人員乙埃。
1.2Git特點(diǎn)
優(yōu)點(diǎn):
- 適合分布式開(kāi)發(fā)強(qiáng)調(diào)個(gè)體。
- 公共服務(wù)器壓力和數(shù)據(jù)量都不會(huì)太大锯岖。
- 速度快介袜、靈活。
- 任意兩個(gè)開(kāi)發(fā)者之間可以很容易的解決沖突出吹。
- 離線工作遇伞。
缺點(diǎn):
資料少(起碼中文資料很少)。
學(xué)習(xí)周期相對(duì)而言比較長(zhǎng)捶牢。
不符合常規(guī)思維鸠珠。
代碼保密性差巍耗,一旦開(kāi)發(fā)者把整個(gè)庫(kù)克隆下來(lái)就可以完全公開(kāi)所有代碼和版本信息。
2.基礎(chǔ)的Git命令學(xué)習(xí)
2.1初始化倉(cāng)庫(kù)
- 非系統(tǒng)盤非中文路徑渐排,建立一個(gè)文件夾learngit炬太,如E:\learngit
-
命令行窗口,通過(guò)如圖所示命令驯耻,進(jìn)入該目錄亲族,并通過(guò)git init命令,將該目錄初始化為一個(gè)git倉(cāng)庫(kù)
初始化倉(cāng)庫(kù).png
2.2 向倉(cāng)庫(kù)添加文件可缚、提交文件
- 在learngit目錄中新建一個(gè)README.md文件
- 使用git add命令霎迫,將文件添加到倉(cāng)庫(kù)
-
使用git commit命令,將文件提交到倉(cāng)庫(kù)帘靡,提交的時(shí)候要加說(shuō)明! (commit之前一定要add)
向倉(cāng)庫(kù)添加文件知给、提交文件.png
2.3 查看倉(cāng)庫(kù)狀態(tài)
-
可以使用git status命令,查看倉(cāng)庫(kù)當(dāng)前的狀態(tài)描姚,比如是都提交完了涩赢,還是有一些add的文件尚未提交等
查看倉(cāng)庫(kù)狀態(tài).png
2.4 查看版本歷史記錄
-
可以用git log命令進(jìn)行查看
查看版本歷史記錄.png
2.5 穿越到任意一個(gè)版本
-
當(dāng)我們需要穿越到任意在記錄中存在的版本去的時(shí)候,只需使用如下命令:
穿越到任意一個(gè)版本.png
2.6 多文件提交
-
Git允許add多個(gè)文件轰胁,然后一次性通過(guò)commit來(lái)提交谒主,比如我們?cè)趌earngit目錄加入一個(gè)圖片文件,再放入一個(gè)文本文件
添加文件.png -
然后進(jìn)行兩次add
兩次add.png -
查看倉(cāng)庫(kù)狀態(tài)并通過(guò)commit一次性提交兩個(gè)文件
提交兩個(gè)文件.png
3.Git學(xué)習(xí)總結(jié)
- git:查看系統(tǒng)有沒(méi)有安裝Git
- 設(shè)置全局屬性赃阀,用戶名和郵箱
git config --global user.name "Your Name"
git config --global user.email “email@example.com” - git init:創(chuàng)建版本庫(kù)
- git add 文件名:將文件添加到臨時(shí)區(qū)
- git commit -m “create hello.txt file”:把文件提交到倉(cāng)庫(kù)
- git status:查看當(dāng)前的Git倉(cāng)庫(kù)狀態(tài)
- git log:查看從近到遠(yuǎn)的提交日志
- git log --pretty=online:簡(jiǎn)略顯示
- git reset --hard HEAD:回退到上一版本
- git reset --hard commit_id:穿梭到指定版本號(hào)的版本
- git rm 文件名:刪除文件
- git config core.autocrIf true:當(dāng)上傳所有文件時(shí)出現(xiàn)warning時(shí)輸入的命令
- git remote add origin git@github.com:yangbaby422/learngit.git:設(shè)置遠(yuǎn)程倉(cāng)庫(kù)
- git push -u origin master:將本地的master分支推送到origin主機(jī)的master分支