0.什么是Git
維基百科上對(duì)git的說明:
? git是用于Linux內(nèi)核開發(fā)的版本控制工具。與CVS、Subversion一類的集中式版本控制工具不同,它采用了分布式版本庫的作法,不需要服務(wù)器端軟件,就可以運(yùn)作版本控制,使得源代碼的發(fā)布和交流極其方便。git的速度很快,這對(duì)于諸如Linux內(nèi)核這樣的大項(xiàng)目來說自然很重要。git最為出色的是它的合并追蹤(merge tracing)能力。
git是一種分布式的版本管理工具,每個(gè)人的設(shè)備上都是一份完整的代碼庫,并且包含了所有的代碼提交歷史。所以,即使是在沒有網(wǎng)絡(luò)的情況下,也可以將代碼提交到本地git版本管理庫中,等到網(wǎng)絡(luò)恢復(fù)之后再上傳到服務(wù)器。
1.工作區(qū)和暫存區(qū)

1.1工作區(qū)
工作區(qū)是指當(dāng)前工程的目錄。
如果我新建的是一個(gè)Android的工程那么它的工作區(qū)則為:

1.2 暫存區(qū)
工作區(qū)有一個(gè)隱藏目錄.git,這個(gè)不算工作區(qū),而是Git的版本庫。
Git的版本庫里存了很多東西,其中最重要的就是稱為stage(或者叫index)的暫存區(qū),還有Git為我們自動(dòng)創(chuàng)建的第一個(gè)分支master,以及指向master的一個(gè)指針叫HEAD。
把文件往Git版本庫里添加的時(shí)候,是分兩步執(zhí)行的:
第一步是用git add把文件添加進(jìn)去,實(shí)際上就是把文件修改添加到暫存區(qū);
第二步是用git commit提交更改,實(shí)際上就是把暫存區(qū)的所有內(nèi)容提交到當(dāng)前分支。
2.基礎(chǔ)的Git命令使用
git命令流程圖:圖片來自知乎@王奧(OX)

2.1配置本地倉庫的用戶信息
git config --global user.name "[name]"
git config --global user.email "[email address]"
2.2 常用的命令
git init :初始化一個(gè)本地倉庫
git add –all :添加所有文件到暫存區(qū)(stage,index)
git commit -m :“描述信息” 提交更改到本地master分支
git status :查看git當(dāng)前狀態(tài)
git diff :查看改動(dòng)后和改動(dòng)前的不同之處
git log :獲得文件更改的歷史記錄
git checkout – readme.txt:把readme.txt文件在工作區(qū)的修改全部撤銷
git remote -v 查看遠(yuǎn)程服務(wù)器地址和倉庫名稱
git remote show origin 查看遠(yuǎn)程服務(wù)器倉庫狀態(tài)
git remote add origin git@xxx.git 添加遠(yuǎn)程倉庫地址
git remote set-url origin git@xxx.git 設(shè)置遠(yuǎn)程倉庫地址(用于修改遠(yuǎn)程倉庫地址)
git remote rm <repository> 刪除遠(yuǎn)程倉庫
git branch # 顯示本地分支
git branch -a # 顯示所有分支
git merge origin/master # 合并遠(yuǎn)程master分支至當(dāng)前分支
git fetch # 獲取所有遠(yuǎn)程分支(不更新本地分支,另需merge)
git pull origin master # 獲取遠(yuǎn)程分支master并merge到當(dāng)前分支
命令速查表 via HalShaw:

2.3為現(xiàn)有的項(xiàng)目添加git控制并上傳到gitlab
cd existing_folder
git init
git remote add origin xxx.git
git add .
git commit -m "Initial commit"
git push -u origin master
3.可視化界面下Git的使用
除了使用git bash的命令行來進(jìn)行項(xiàng)目版本控制,可視化的git管理工具也是我們?nèi)粘W罱?jīng)常使用的。
3.1 Android Studio 自帶的git可視化工具
使用前記得安裝git,并且在Android Studio中配置好git。
3.1.1 基本命令的使用
在project視圖下選中整個(gè)項(xiàng)目
add
git>>add 即可將整個(gè)工程添加到git的暫存區(qū)。

commit
要控制好commit粒度以及commit信息的書寫

push
push之前要確保本機(jī)的ssh已經(jīng)添加到管理遠(yuǎn)程倉庫的網(wǎng)站中。
這里可以有兩種方式設(shè)置遠(yuǎn)程倉庫地址
第一種,在可視化界面中點(diǎn)擊origin:后的藍(lán)色文字,添加遠(yuǎn)程倉庫
第二種,利用git bash,
git remote -v 查看遠(yuǎn)程服務(wù)器地址和倉庫名稱
git remote show origin 查看遠(yuǎn)程服務(wù)器倉庫狀態(tài)
git remote add origin git@xxx.git 添加遠(yuǎn)程倉庫地址
git remote set-url origin git@xxx.git 設(shè)置遠(yuǎn)程倉庫地址(用于修改遠(yuǎn)程倉庫地址)
git remote rm <repository> 刪除遠(yuǎn)程倉庫
這5個(gè)命令可以讓你完全掌握遠(yuǎn)程倉庫的狀態(tài)信息,并且在出現(xiàn)異常時(shí)(如遠(yuǎn)程倉庫地址更改,服務(wù)器綁定域名更換等等),可以很方便地移除或者修改遠(yuǎn)程倉庫的地址。

3.1.2快速調(diào)出版本控制的控制面板
或者在選中項(xiàng)目之后,使用快捷鍵Alt+`(windows下),即可調(diào)出版本控制的控制面板,快速地進(jìn)行相應(yīng)操作,非常方便,推薦使用。

3.1.3 Version control
清楚地展示Git flow
這里可以很清楚地展示git倉庫的各個(gè)版本之間的關(guān)系以及版本信息。

3.2 SourceTree ,Git GUI
這些也是非常好用的圖形化工具,這里就不多介紹了。
Tips:
推薦一些比較好的關(guān)于git的網(wǎng)站:
在線的git使用學(xué)習(xí)網(wǎng)站
https://learngitbranching.js.org/
廖雪峰的git教程
https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000