Android Git 常用命令和规范
轉載請標明出處:http://blog.csdn.net/zhaoyanjun6/article/details/70332707
本文出自【趙彥軍的博客】
文章目錄
- 概念
- git 操作流程圖
- 專有名詞了解
- 常見命令
- 1、查看 Git 版本信息
- 2、獲取當前登錄的用戶
- 3、獲取當前登錄用戶郵箱
- 4、設置當前登錄用戶的用戶名
- 5、設置當前登錄用戶的郵箱
- 6、初始化倉庫
- 7、查看本地所有的分支
- 8、查看本地和遠程所有分支
- 9、查看遠程所有分支
- 10、創(chuàng)建分支
- 11、切換分支
- 12、創(chuàng)建并切換分支
- 13、添加文件
- 14、批量添加文件
- 15、查看log
- 刪除相關
- 拉取更新
- commit相關
- push相關
- merge
- rebase
- stash
- Diff 相關
- Tag 相關
- 回退 reset 相關
- reset --hard 恢復
- 合并多個commit為一個commit
- Git commit 日志規(guī)范
- 參考資料
在 Android Studio 中要操作 Git 服務,有兩種方式,它們分別是 GUI 和 命令行方式,今天就著重介紹 命令行 方式操作 Git 服務 。
首先在 Android Studio 里面找到 命令行窗口,如下圖所示:
概念
git 操作流程圖
專有名詞了解
- Workspace:工作區(qū)
- Index / Stage:暫存區(qū)
- Repository:倉庫區(qū)(或本地倉庫)
- Remote:遠程倉庫
常見命令
1、查看 Git 版本信息
git --version結果:
git version 2.11.0.windows.12、獲取當前登錄的用戶
git config --global user.name結果:
zhaoyanjun3、獲取當前登錄用戶郵箱
git config --global user.email4、設置當前登錄用戶的用戶名
git config --global user.name '趙彥軍'5、設置當前登錄用戶的郵箱
git config --global user.email '362299465@qq.com'6、初始化倉庫
文件夾下初始化一個倉庫,此時文件里會到一個.git的隱藏文件夾
git init7、查看本地所有的分支
git branch效果如圖所示:
可以看出,我的本地有兩個分支:master 分支 、zhaoyanjun 分支。 master 分支 顯示的是綠色,左側有一個 * 號,表示,當前我們在 master 分支上操作。
8、查看本地和遠程所有分支
git branch -a效果如圖所示:
可以看出,本地有兩個分支(master、zhaoyanjun),紅色的記錄有4條,代表4條遠程分支(laijian、master、zhaoyanjun、zhiqiang)。
9、查看遠程所有分支
git branch -r10、創(chuàng)建分支
創(chuàng)建 dev 分支。
git branch dev11、切換分支
切換 dev 分支為當前分支
git checkout dev12、創(chuàng)建并切換分支
創(chuàng)建并切換 dev 分支。相當于 git branch dev 和 git checkout dev 的合集。
git checkout -b dev13、添加文件
把 當前根目錄中的 loader1.png 添加在暫存區(qū)。 add 后面需要寫 文件的相對路徑。
git add loader1.png把 image 目錄下的 loader1.png 圖片添加到暫存區(qū)
git add image/loader1.png在 Android Studio 很多層級的目錄文件中,如何獲取文件的路徑:
14、批量添加文件
git add -A15、查看log
git log退出 log
q刪除相關
- 刪除本地倉庫的分支
刪除本地倉庫的 dev 分支
- 刪除遠程倉庫的分支
刪除遠程的 dev 分支
- 刪除本地的一個文件
拉取更新
- 拉去遠程分支,更新到本地
- pull 使用 --rebase參數(shù)
表示把你的本地當前分支里的每個提交(commit)取消掉,并且把它們臨時 保存為補丁(patch)(這些補丁放到".git/rebase"目錄中),然后把本地當前分支更新 為最新的"origin"分支,最后把保存的這些補丁應用到本地當前分支上。
git pull --rebasecommit相關
我們使用 git add 命令將內容寫入暫存區(qū)。
git commit 命令將暫存區(qū)內容添加到本地倉庫中。
提交暫存區(qū)到本地倉庫中:
git commit -m [message][message] 可以是一些備注信息。
提交多個文件到本地倉庫中:
git commit [file1] [file2] ... -m [message]-a 參數(shù)設置修改文件后不需要執(zhí)行 git add 命令,直接來提交
git commit -a- 提交文件到分支
push相關
git push 命用于從將本地的分支版本上傳到遠程并合并。
git push <遠程主機名> <本地分支名>:<遠程分支名>如果本地分支名與遠程分支名相同,則可以省略冒號:
git push <遠程主機名> <本地分支名>- 以下命令將本地的 master 分支推送到 origin 主機的 master 分支。
相等于:
git push origin master:master如果本地版本與遠程版本有差異,但又要強制推送可以使用 --force 參數(shù):
git push --force origin master也可以簡寫成 -f
強制push到遠程
merge
- 合并本地 dev 分支到當前分支
- 合并其他分支上的節(jié)點到當前分支
- 合并遠程 dev 分支到當前分支
git-merge命令有以下兩種用途:
1、用于git-pull中,來整合另一代碼倉庫中的變化(即:git pull = git fetch + git merge)
2、用于從一個分支到另一個分支的合并
- 解決合并沖突
警告:運行 git-merge時含有大量的未commit文件很容易讓你陷入困境,這將使你在沖突中難以回退。因此非常不鼓勵在使用git-merge時存在未commit的文件,建議使用git-stash命令將這些未commit文件暫存起來,并在解決沖突以后使用git stash pop把這些未commit文件還原出來。
rebase
git rebase 你其實可以把它理解成是“重新設置基線”,將你的當前分支重新設置開始點。這個時候才能知道你當前分支于你需要比較的分支之間的差異。
-
rebase會把你當前分支的 commit 放到公共分支的最后面,所以叫變基。就好像你從公共分支又重新拉出來這個分支一樣。
-
merge 會把公共分支和你當前的commit 合并在一起,形成一個新的 commit 提交。
-
不要在公共分支使用rebase
-
本地和遠端對應同一條分支,優(yōu)先使用rebase,而不是merge
把 master 分支當做基礎分支,作用在 feature 分支
git checout feature git rebase master把某個 commit 節(jié)點當做基礎分支
git rebase 4b60fa7b1你想放棄合并,回到未合并之前的狀態(tài)
git rebase --abort從遠程 pull 代碼到本地的時候,也可以用 rebase
git pull --rebasegit pull和git pull --rebase區(qū)別:git pull做了兩個操作分別是‘獲取’和合并。所以加了rebase就是以rebase的方式進行合并分支,默認為merge。
stash
stash命令可用于臨時保存和回復修改,可跨分支。
- git stash save ‘message’
臨時保存狀態(tài),可以寫信息
//保存當前的修改,名字為 a4 git stash save 'a4'//或者可以省略 save 'message',將默認生成 stash 名字 git stash- git stash list
查看保存的臨時列表
git stash list- git stash show
查看保存的文件列表
- git stash pop
命令恢復之前緩存的工作目錄,將緩存堆棧中的對應stash刪除,并將對應修改應用到當前的工作目錄下,默認為第一個stash,即stash@{0},如果要應用并刪除其他stash,命令:git stash pop stash@{$num},比如應用并刪除第二個:git stash pop stash@{1}
//恢復最近的臨時狀態(tài),并刪除 git stash pop //恢復指定編號的 stash git stash pop stash@{num}- git stash drop
刪除某個 stash
//刪除 stash 0 git stash drop stash@{0}- git stash clear
刪除所有保存
Diff 相關
-
比較的是暫存區(qū)和工作區(qū)的差異
git diff -
比較的是暫存區(qū)和歷史區(qū)的差異
git diff --cached -
比較的是歷史區(qū)和工作區(qū)的差異(修改)
git diff master
Tag 相關
- 查看所有 tag
- 刪除某一 tag
- 查看某一標簽
- 給當前分支打標簽
- 為歷史版本打標簽
回退 reset 相關
reset命令有3種方式:
-
git reset –mixed:
此為默認方式,不帶任何參數(shù)的git reset,即時這種方式,它回退到某個版本,只保留源碼,回退commit和index信息 -
git reset –soft:
回退到某個版本,只回退了commit的信息,不會恢復到index file一級。如果還要提交,直接commit即可 -
3:git reset –hard:
徹底回退到某個版本,本地的源碼也會變?yōu)樯弦粋€版本的內容
1、 將本地的狀態(tài)回退到和遠程一樣
git reset --hard origin/master2、將暫存區(qū)里面的修改清空 , 回退到上一次提交的記錄
git reset --hard3、將本地的狀態(tài)回退到 某個版本
git reset --hard 5230bb6將本地狀態(tài)回退到 5230bb6 這次的提交
reset --hard 恢復
我本地有一條 commit a ,還沒有 push 到遠程。此時使用 git reset --hard 5848393 回到某個節(jié)點,如何找回節(jié)點 a
先執(zhí)行 git reflog 命令
找到你需要恢復的節(jié)點的 hash 值
執(zhí)行 git reset --hard cd786510 就可以回到原來的 commit 了
合并多個commit為一個commit
很多時候,我們需要在自己的分支去完成一個新功能,中間會產生多個臨時 commit , 如果我們不做處理,那么這些臨時 commit 就會顯得特別亂,現(xiàn)在交給大家一個技能,就是把多個 commit 合并成一個,然后提交。
下面用一張圖說明:
從上圖我們可以看出,我們在 v1版本發(fā)布 的基礎上,又做了3個提交。我們現(xiàn)在用 rebase 命令把這三個提交合并成一個。
160ce28 為 v1版本發(fā)布的git記錄號,這里做參考,表示當前節(jié)點不參與合并
或者
git rebase -i HEAD~3執(zhí)行完這個命令后,我們將看到如下的合并信息。
上面未被注釋的部分列出的是我們本次rebase操作包含的所有提交,下面注釋部分是git為我們提供的命令說明。每一個commit id 前面的pick表示指令類型,git 為我們提供了以下幾個命令:
根據(jù)我們的需求,我們將commit內容編輯如下:
然后保存退出。執(zhí)行退出命令后,會出現(xiàn)一個修改提交信息的窗口
提交信息如果不需要修改,那么我們直接退出就可以了。下面我們來做一個修改的操作,如下:
修改完成后,保存退出。git 會幫我們做好合并的工作,如下:
我們切換到可視化工具中看看,效果如下:
Git commit 日志規(guī)范
一般情況下,在 commit 的時候,是要求必須寫 commit 日志,否則不能 commit . 那么 commit 日志也是需要規(guī)范的。日志格式一般為:
type( scope ): subject 空行 body 空行 footertype(必需)、scope(可選)和subject(必需)。
type
用于說明 commit 的類別,只允許使用下面7個標識。
-
feat:新功能(feature)
-
fix:修補bug
-
docs:文檔(documentation)
-
style: 格式(不影響代碼運行的變動)
-
refactor:重構(即不是新增功能,也不是修改bug的代碼變動)
-
test:增加測試
-
chore:構建過程或輔助工具的變動
如果type為 feat 和 fix ,則該 commit 將肯定出現(xiàn)在 Change log 之中。其他情況(docs、chore、style、refactor、test)由你決定,要不要放入 Change log,建議是不要。
scope
scope用于說明 commit 影響的范圍,比如數(shù)據(jù)層、控制層、視圖層等等,視項目不同而不同。一般有三個可以選擇。
- all :表示影響面大 ,如修改了網(wǎng)絡框架 會對整個程序產生影響
- loation: 表示影響小,某個小小的功能
- module:表示會影響某個模塊 如登錄模塊、首頁模塊 、用戶管理模塊等等
subject
subject是 commit 目的的簡短描述,不超過50個字符。
以動詞開頭,使用第一人稱現(xiàn)在時,比如change,而不是changed或changes
第一個字母小寫
結尾不加句號(.)
body
具體的修改信息 應該盡量詳細
footer
放置寫備注啥的,如果是 bug ,可以把bug id放入
效果圖如下圖所示:
參考資料
http://www.ruanyifeng.com/blog/2015/12/git-cheat-sheet.html
總結
以上是生活随笔為你收集整理的Android Git 常用命令和规范的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Groovy 使用完全解析
- 下一篇: Android 监听 WiFi 开关状态