1.0 安裝Git
百度,進(jìn)入Git官網(wǎng)下載最新版,安裝,選好安裝位置后,一路下一步。
2.0 創(chuàng)建代碼倉庫
雖然在windows上安裝的Git是可以在圖形界面上進(jìn)行操作的。并且Android Studio也支持以圖形化的形式操作Git。但是Git的各種命令才是應(yīng)該掌握的核心技能,不管在哪個(gè)操作系統(tǒng)中使用命令來操作Git肯定是通用的。圖形化的操作應(yīng)該是掌握命令用法的前提下,進(jìn)一步提升自己的工作效率。
2.1 通過命令使用Git
如果你使用的是Linux系統(tǒng),先打開shell界面,如果使用的是windows系統(tǒng),從開始菜單中找到Git Bash并打開。

首先配置一下自己的身份,這樣可以在提交代碼的時(shí)候Git就可以知道是誰提交的,命令如下所示:
git config --global user.name "edpeng"
git config --global user.email "edpeng@gmail.com"


配置完成后可以使用同樣的命令來查看是否配置成功,只需要將最后的名字和郵箱地址去掉即可。

2.2 創(chuàng)建代碼倉庫
倉庫(Repository)是用來保存版本管理所需信息的地方。所有本地提交的代碼都會被提交到代碼倉庫中,如果有需要還可以再推送到遠(yuǎn)程倉庫中。
下面嘗試給PortableAnti_theft項(xiàng)目建立一個(gè)代碼倉庫。
先進(jìn)入到PortableAnti_theft項(xiàng)目的目錄下面,注意路徑是正斜杠。
cd G:
cd workspace/Android/PortableAnti_theft/


在接下來的操作之前,需要設(shè)置兩個(gè).gitignore文件
一個(gè)是項(xiàng)目下的.gitignore文件
*.iml
.gradle
/local.properties
/.idea/caches
/.idea/libraries
/.idea/modules.xml
/.idea/workspace.xml
/.idea/navEditor.xml
/.idea/assetWizardSettings.xml
.DS_Store
/build
/captures
.externalNativeBuild
一個(gè)是app目錄下的.gitignore文件
/build
凡是出現(xiàn)的目錄或文件,表示不進(jìn)行版本控制。
然后輸入如下指令,只需要一行命令就可以完成創(chuàng)建代碼倉庫的操作。
git init

倉庫創(chuàng)建完后會在PortableAnti_theft項(xiàng)目的根目錄下生成一個(gè)隱藏的.git文件夾,這個(gè)文件夾是用來記錄本地所有的git操作的,可以通過ls -al命令來查看一下,如下所示。

如果要?jiǎng)h除本地倉庫,只需要?jiǎng)h除這個(gè)文件夾就行了。
3.0 提交本地代碼
代碼倉庫建立完之后就可以提交代碼了,其實(shí)提交代碼的方法也非常簡單,只需要使用add和commit命令就可以了。
add 把想要提交的代碼先添加進(jìn)來。
commit 真正去執(zhí)行提交操作。
git add build.gradle
git add app
但是,如上方法進(jìn)行添加有些復(fù)雜,只需要在add的后面添加一個(gè)點(diǎn),就表示添加所有的文件了,命令如下所示。
git add .

現(xiàn)在項(xiàng)目下的所有文件都已經(jīng)添加好了,輸入如下命令提交。
git commit -m "First commit"

需要注意的是,在commit命令的后面一定要通過-m參數(shù)來加上提交的描述信息。沒有描述信息的提交被認(rèn)為是不合法的。這樣所有的代碼就已經(jīng)成功提交了。
4.0 查看修改內(nèi)容
查看文件修改情況的方法非常簡單,在項(xiàng)目的根目錄下輸入命令:
git status

這時(shí)候提示沒有任何可提交的文件,因?yàn)槲覀儎倓偺峤贿^。
如何查看更改后的內(nèi)容?
git diff
git diff app/src/main/java/com/example/portableanti_theft/Activity/MainActivity.java
5.0 撤回未提交的修改
git checkout app/src/main/java/com/example/portableanti_theft/Activity/MainActivity.java
6.0 查看歷史提交信息
git log

只想查看其中一條的信息,可以在命令中指定該記錄的id并加上-1參數(shù)表示我們只想看到一行記錄。
git log 5e78e6b0dd69e2d4ca8750db46b4d23d5af358a8 -1
如果想查看這條記錄具體修改了什么內(nèi)容,可以在命令中加入-p參數(shù)。
git log 5e78e6b0dd69e2d4ca8750db46b4d23d5af358a8 -1 -p

其中減號(紅色)代表刪除的部分,加號(綠色)代表添加的部分(藍(lán)色代表該版本內(nèi)沒有變動的)。

7.0 分支的用法
開發(fā)中的版本迭代:

7.1 查看當(dāng)前版本庫中有哪些分支
git branch

master: 主干線
AndroidX:自己之前創(chuàng)建的分支
其中我們的AndroidX最左邊有個(gè)“*”號,表示我們的代碼在AndroidX分支上
7.1 創(chuàng)建分支
git branch version1.0
這樣就創(chuàng)建了一個(gè)名為 version1.0的分支
7.2 切換分支
git checkout master

7.2 合并分支
git checkout master
git merge version 1.0
7.2 刪除分支
git branch -D version1.0
8.0 與遠(yuǎn)程版本協(xié)作
8.1下載到本地
比如現(xiàn)在有一個(gè),遠(yuǎn)程版本庫的Git地址是http://github.com/example/test.git,就可以使用如下命令將代碼下載到本地:
git clone http://github.com/example/test.git
8.2本地同步遠(yuǎn)程版本庫
借助push命令將本地內(nèi)容同步到遠(yuǎn)程版本庫:
git push origin master
其中origin部分表示遠(yuǎn)程版本庫的Git地址,master部分指定的是同步到哪一個(gè)分支上。

中間會彈出登錄窗口,輸入賬號密碼,即可完成上傳。

登錄Github,進(jìn)入該項(xiàng)目主頁:

8.3 遠(yuǎn)程同步本地
將遠(yuǎn)程版本庫上的修改同步到本地,Git提供兩種命令來完成此功能,分別是fetch和pull,fetch的語法規(guī)則和push是差不多的:
git fetch origin master
執(zhí)行此命令后,將會將遠(yuǎn)程版本庫上的代碼同步到本地,不過同步下來的代碼并不會合并到任何分支上去,而是會存放到一個(gè)origin/master分支上,這時(shí)候可以通過different命令來查看遠(yuǎn)程版本庫上到底修改了哪些東西:
git diff origin/master
之后再調(diào)用merge命令將origin/master分支上的修改合并到主分支上即可:
git merge origin/master
而pull命令就相當(dāng)于將fetch和merge這兩個(gè)命令放在一塊執(zhí)行,可以從遠(yuǎn)程版本庫上獲得的最新的代碼并合并到本地:
git pull origin master
9.0 將代碼托管到GitHub上
9.1 新建GitHub項(xiàng)目倉庫
首先 我們本地有一個(gè)項(xiàng)目,GitHub也有一個(gè)項(xiàng)目倉庫。我的采用的是添加一個(gè)Android項(xiàng)目類型的.gitignore文件,并使用Apache License 2.0 開源協(xié)議。
輸入
git clone https://github.com/bobokaka/PortableAnti_theft-APP
把遠(yuǎn)程版本庫克隆到本地。
9.1 復(fù)制合并
將下載下來的文件復(fù)制到上一層目錄中,覆蓋即可。

然后刪除PortableAnti_theft-APP目錄。
9.3 提交項(xiàng)目
先將所用文件添加到版本控制中“”
git add .
在本地執(zhí)行提交操作。
git commit -m "First GitHub commit"
最后將提交的內(nèi)容同步到遠(yuǎn)程版本庫,也就是GitHub上面:
git push https://github.com/bobokaka/PortableAnti_theft-APP AndroidX
其中的AndroidX是我自己自命名的版本分支的名稱。


登錄GitHub網(wǎng)站,可以看到提交的文件已經(jīng)存在了。

10.0 其他命令
git 查看、切換用戶
查看命令:
查看用戶名:
git config user.name
查看用戶郵箱:
git config user.email
修改命令:
修改用戶名:
git config --global user.name "Your_username"
修改用戶郵箱:
git config --global user.email "Your_email"
注:user.name或者user.email后需有一個(gè)空格,再寫你的用戶名或者用戶郵箱
11.0 一些bug的處理
11.1 切換GitHub賬戶或者GitLab賬戶
之前沒有登陸過的會自動彈出窗體讓你輸入賬號密碼,可是換別人的賬號登錄,就會下載不下來。

百度的解決方案都是設(shè)置什么SSH key,扯淡,主要是修改自己的數(shù)據(jù)憑據(jù):

修改保存,即可切換。
11.2 拉取指定分支代碼解決方案:
以拉取develop分支的代碼為例, 要拉取其余分支代碼類似操作
使用git命令拉取
命令:git clone -b develop XXX
其中develop就是分支的名稱
11.3 回滾版本
先查看保存記錄
git log -3
只查看前3條。
git reset --hard e377f60e28c8b84158
強(qiáng)行提交
git push -f origin master
11.4 刪除分支
1、查看所有分支
git branch -a
2、查看當(dāng)前所在分支
git branch
3、刪除本地的bug_xzx分支
git branch -d bug_xzx
4、刪除遠(yuǎn)程的bug_xzx分支
git push origin --delete bug_xzx
5、Git中的.gitignore文件配置了之后,不生效問題
解決方法
git rm -r --cached .
git add .
git commit -m '代碼提交'
git push origin
git rm -r --cached:保留本地文件,刪除staging area中的文件
git add 本地文件加入到staging area中
提交
push
6.強(qiáng)行合并分支(demo默認(rèn)在master分支上)
git merge --strategy-option=theirs dev_pre --allow-unrelated-histories
將dev_pre 強(qiáng)行覆蓋合并master分支
--strategy-option=ours 反之
報(bào)錯(cuò):
fatal: unable to access 'https://git.gwi.com.cn:9103/customization/ningbocb/kiosk-cli-2nd.git/': SSL certificate problem: self signed certificate
解決:
git config --global http.sslVerify false
END