編輯:關於android開發
標簽(空格分隔): Android進階
在之前的Android基礎入門系列我們就講解過Git的簡單使用了,進階系列我們
系統地對Git進行講解,基本命令的使用;工作區,暫存區,歷史倉庫,遠程倉庫的概念,
團隊協作中的分支管理,Android Studio中使用Git等;Git是一個快速的分布式的版本
控制系統,和其他的版本控制系統的差別在於Git直接記錄快照,而不是差異比較!
差異比較的版本控制系統只關心文件內容的具體差異,然後每次記錄哪些文件做了更新,
以及更新了哪些行的內容!當我們想切換到以前某個版本的時候,我們需要merge,而
Git在每次commit時,都會完整的存儲當前版本所有修改的文件,而不是只存儲diff,
所以想切換都某個歷史版本只需簡單的reset即可!
在開始使用Git之前我們先要知道Git的四個部分:
下面就來分別介紹這四個部分:
工作區就不用說了,我們當前的工作空間;而另外三個部分,我們舉個形象點的例子來幫助理解吧:
大家都應該網購過吧,比如逛某貓超市的時候,看到心儀的商品,我們可以把商品加入到
購物車(暫存區),我們可能會頻繁地添加商品(add)又或者移除商品(checkout),
這個過程我們可以隨便嗨,反正還不用給錢;當我們挑得七七八八,接著我們就要提交我們的訂單了,
點擊提交訂單(commit),會生成一個商品訂單列表(快照),我們還可以在提交的時候加點
備注信息,比如要什麼顏色之類的(commit -m “顏色”),此時訂單還沒有付款(push),我們
可以在自己賬戶的未處理訂單列表(本地倉庫)中找到我們的這個訂單(快照),也可以看到自己
以前的一些訂單記錄;好吧,接著我們選擇這個還沒付款的訂單,然後進行付款(push),付款
完成後,商家(遠程倉庫)就會收到你的這個訂單,然後發貨…
相信有了這個圖以及網購的形象化例子,你應該能理解Git的四個部分的概念了,而Git的操作
大部分都是在本地執行的,下面是Git的下載安裝
Windows系統:
到Git For Windows或者git-for-windows.github.io上下載,然後是傻瓜式的下一步
Linux系統:
到Download for Linux and Unix下載,假如你是和我一樣的Ubuntu的話直接在Terminal鍵入:
sudo apt-get install git
Mac系統:
到Installing on Mac下載
安裝完Git後,我們就可以打開Git命令行:
Windows在任意位置右鍵,點擊Git Bash打開Git命令行
Ubuntu下直接打開Terminal就可以,Terminal的快捷鍵是:ctrl + alt + t
這裡說下為什麼要使用命令行:
逼格高,命令熟悉後可以沒事無情秀一波;當然,其實更多的減少跨平台後使用Git的成本,
比如你熟悉了Win下某個Git的GUI工具,但是加入某一天你要遷移到Linux上,全是命令
行,你怎麼玩…或者需要換另一個新的GUI工具,你又需要花時間去熟悉這個工具的使用。
看自己吧,也沒一定要命令行,你也可以用圖形化工具,後面也會講下在Android Studio上使用Git!
PS:本來是打算在Ubuntu下完成命令演示的,後來發現截圖後還要自己處理截圖,因為
Ubuntu只能全屏截圖或者窗口截圖,所以,直接在win上進行演示了~
安裝完Git要做的第一件事就是配置你的身份信息,團隊開發,萬一哪裡錯問題了,誰背鍋?是把!
鍵入下述指令:
git config --global user.name "coder-pig"
git config --global user.email "[email protected]"
配置完後,把”“部分信息去掉,輸多一次上面的指令,可以看到是否配置成功
也可以鍵入下述指令來查看所有的git設置:
git config --list
和其他的命令行一樣,git同樣帶有help指令,當遇到沒見過或者忘記了的命令的時候,可以鍵入:
git help init
把init改成你要查詢的那個指令即可!比如git help add
win下會打開一個Git的Manual(手冊)的頁面,可以在之類查看指令的一些用法
而Ubuntu下則會直接在命令行輸出:
你也可以到Git官方手冊查找對應指令!
你可以直接鍵入下述指令創建一個新的帶Git倉庫的項目:
git init GitForTest
把GitForTest改成你想創建的工程名即可!接著我們可以來到新創建的工程的目錄下,這裡需要
修改下讓隱藏文件可見,就可以看到.git的文件夾裡,裡面東東就是我們git倉庫的東東了,切記
別隨意去改或者刪除裡面的東西!(你也可以鍵入:ls -ah來查看隱藏文件)
當然假如你已經有項目了,想在之前項目的基礎上添加Git倉庫,那麼通過命令行或者git bash來到當前工程的文件夾目錄下,鍵入下述指令即可為你的項目添加本地Git倉庫:
git init
我們可以把新建或者修改過後的文件,我們可以通過git add指令添加到暫存區
你可以用下面的指令,一個個文件的添加:
git add README.md
要添加的文件很多,覺得添加起來很麻煩,你可以一次性添加多個:
這裡說下一個名詞:tracked代表已經加入Git倉庫,untracked代表還未加入Git倉庫!
1)將所有tracked文件中被修改或已刪除的文件信息添加到Git暫存區,不會處理untracked的文件!
git add -u
2)將所有tracked文件中被修改或已刪除的文件信息添加到Git倉庫,會把理untracked的文件信息
也加入Git暫存區
git add -A
3)把當前工作區的所有文件全加入到Git暫存區
git add .
除了上面兩種外,git其實還提供了交互界模式,我們可以鍵入:
git add -i
上圖的流程是這樣的:
1.我現在GitForTest的文件夾裡創建了兩個文件
2.鍵入git add -i,進入後,鍵入4,選擇添加untracked的文件
3.他給我們列出了untracked的文件,然後我們根據序號來添加文件
4.輸入?會彈出相關提示,然後直接回車,結束選擇!
5.然後再次輸入git add -i,輸入4,可以看到已不存在untacked的文件了!
當然還有其他幾個指令,限於篇幅,有興趣的可以自己研究研究!
我們可以通過git commit -m “xxx”指令將暫存區的內容提交到倉庫中
git commit -m "修改了xxx"
後面的-m是對本次提交的說明,”xxx”是說明內容,不該偷懶省去,假如你這裡不
輸入,-m “xxx” 的話,也會讓你進入Vim來編寫聲明信息的~所以建議還是在這裡進行提交內容的說明吧!
另外,我們的項目可能存在一些幾百年不變的或者自動生成的文件,比如lib,gen,bin文件夾等,我們沒必要
每次都把這些都commit,我們可以在.git同級的目錄下創建一個名為.gitignore的文件,然後編輯內容,把
不需要提交的文件寫上,那麼commit的時候就會自動忽略這些文件的了~:
我們可以用git status指令來查看工作區與暫存區的當前情況,比如工作區有什麼文件和暫存區的文件
對比,發生了改變,要不要add下?又比如暫存區裡有東西add了,但是還沒提交等等,直接鍵入下述指令即可:
git status
比如我這裡修改了下README.md文件~
只是改了沒add:
add文件後:
commit提交暫存區內容
恩,很簡單,另外,你還可以用下述指令,讓結果以簡短的形式輸出~
git status -s
上面我們可以通過git status獲取當前工作區與緩存區的狀態,僅僅是狀態,
假如我們需要查看發生改變的內容,那麼你需要鍵入下述指令:
git diff
這樣就可以看到當前的工作區與暫存區中對比,做了哪些修改!
PS:上面是我們在README.md文件裡添加了一條語句,然後再輸入git diff!
還記得上面的網購的例子嗎,我們可以在我的訂單中找到自己的訂單記錄,
同樣,在git中,我們也可以查看所有commit的記錄!可以鍵入下述指令:
git log
當然,你也可以調用下述指令獲得更精簡的結果
git log --oneline
如果上面還滿足不了你的話,可以參考:Viewing the Commit History
對log進行定制,比如:
我們可以直接右鍵刪除一個文件,又或者進入命令行,鍵入rm xxx.xxx將文件刪除,但是刪除的僅僅是
當前工作區裡的文件,暫存區裡還是存在著該文件的,所以此時你鍵入git status的話,會發現:
git告訴你工作區的文件被刪除了,然後你有兩種選擇:
1)把暫存區裡的文件也刪了,那麼鍵入:
git rm "xxx.xxx"
git commit -m "xxx"
2)誤刪了,將暫存區的文件恢復到工作區,那麼可以鍵入:
git checkout -- xxx.xxx
duang!被刪除的文件又回來了~
當然,上面的checkout不止適用於誤刪文件,當你把一個文件改得面目全非的時候,
你突然後悔了,但是你已經ctrl+s保存了很多次代碼了,你可以用用上述指令回到
這個文件的最初樣子!(前提是你還沒add!)
假如你已經把文件用git add到了暫存區,那麼此時你直接用checkout文件是沒有作用的!
我們需要通過git reset指令來廢除此次修改記錄(版本回退),讓當前文件回到上一次提交時的狀態!
鍵入:
git reset HEAD xxx.xxx
此時再調用:
git checkout -- xxx.xxx
文件即可恢復原樣!
假如,我們的文件修改已經commit了,而你無端端的又後悔了,想恢復成上一次commit時的文件,
又或者上上次的,這時候你可能開始方了,不過Git為我們提供了時光機(版本回退),我們可以
通過下述指令回退到上一個版本:
git reset HEAD^
恩,我們鍵入git log後可以看到版本已經回退到上一個版本了!
如果是上上個版本,你只需加多^,再上一個版本繼續加^,如此類推!
當然,除了上面的形式,你還可以根據版本號來回退,比如這裡我退到第一個版本:
git reset --hard 8c3f91f
嘿嘿,無壓力,你突然又後悔了,想回到新的那個版本,嗯…好吧,同樣是上面的指令:
不過版本號改成最新那次commit的版本號就可以了!
git reset --hard cf2d155
你可能會支支吾吾的過來對我說:”恩,那個我剛剛把命令行關了,那個最新的版本號找不著了,
git log也找不到那個最新的版本號,那我是不是不能回未來了?”幸運的是,Git時光機會記錄
你輸入的每一條指令,你只需鍵入下述指令:
git reflog
拿到版本號,git reset即可~
輸入Git命令的時候按兩次Tab就可以了!
如果想偷懶,想少敲幾個字母,可以為命令設置別名,然後鍵入別名就調用對應指令,比如將status設置成st:
本節給大家詳解了Git的本地使用,大部分時間我們都是在本地上進行Git的一些操作,所以熟
悉這些命令很重要!當然這是需要一點點積累的,敲多了,敲起來就行雲流水了!下節開始,我們
來學習遠程倉庫,分支管理,團隊開發中的協作,等等~謝謝!
參考文獻:
Pro Git(官方) Pro Git(oschina)
Android 學習之路,android學習之路Android 學習之路 轉載:http://stormzhang.com/android/2014/07/07/lea
Android Studio中的EditText控件使用詳解 一:新建HelloEditText工程 創建設置如下: Project name:HelloEditTe
Android簡單介紹SharedPreference,內部文件,sdcard數據存儲,SharedPreference 以xml的結構儲存簡單的數據,儲存在data
我的Android進階之旅------)關於android:layout_weight屬性的詳細解析 關於android:layout_weight屬性的詳細解析 效