Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android進階中級教程——1.1 Git的本地使用詳解

Android進階中級教程——1.1 Git的本地使用詳解

編輯:關於Android編程

Android進階中級教程——1.1 Git的本地使用詳解

標簽(空格分隔): Android進階


1.引言

在之前的Android基礎入門系列我們就講解過Git的簡單使用了,進階系列我們
系統地對Git進行講解,基本命令的使用;工作區,暫存區,歷史倉庫,遠程倉庫的概念,
團隊協作中的分支管理,Android Studio中使用Git等;Git是一個快速的分布式的版本
控制系統,和其他的版本控制系統的差別在於Git直接記錄快照,而不是差異比較!
差異比較的版本控制系統只關心文件內容的具體差異,然後每次記錄哪些文件做了更新,
以及更新了哪些行的內容!當我們想切換到以前某個版本的時候,我們需要merge,而
Git在每次commit時,都會完整的存儲當前版本所有修改的文件,而不是只存儲diff,
所以想切換都某個歷史版本只需簡單的reset即可!


2.Git的幾個部分

在開始使用Git之前我們先要知道Git的四個部分:

\

下面就來分別介紹這四個部分:

工作區就不用說了,我們當前的工作空間;而另外三個部分,我們舉個形象點的例子來幫助理解吧:
大家都應該網購過吧,比如逛某貓超市的時候,看到心儀的商品,我們可以把商品加入到
購物車(暫存區),我們可能會頻繁地添加商品(add<喎?/kf/ware/vc/" target="_blank" class="keylink">vc3Ryb25nPinT1rvy1d/SxrP9yczGtyg8c3Ryb25nPmNoZWNrb3V0PC9zdHJvbmc+KaOsPGJyIC8+DQrV4rj2uf2zzM7Sw8e/ydLUy+ax4+DLo6y3tNX9u7myu9PDuPjHrqO7tbHO0sPHzPS1w8bfxt+wy7DLo6y909fFztLDx77N0qrM4b27ztLDx7XEtqm1pcHLo6w8YnIgLz4NCrXju/fM4b27tqm1pSg8c3Ryb25nPmNvbW1pdDwvc3Ryb25nPimjrLvhyfqzydK7uPbJzMa3tqm1pcHQse0oPHN0cm9uZz6/7NXVPC9zdHJvbmc+KaOsztLDx7u5v8nS1NTazOG9u7XEyrG68rzTteM8YnIgLz4NCrG416LQxc+io6yxyMjn0qrKssO00dXJq9auwOC1xCg8c3Ryb25nPmNvbW1pdCAtbSAmbGRxdW870dXJqyZyZHF1bzs8L3N0cm9uZz4po6y0y8qxtqm1pbu5w7vT0Li2v+4oPHN0cm9uZz5wdXNoPC9zdHJvbmc+KaOsztLDxzxiciAvPg0Kv8nS1NTa19S8utXLu6e1xDxzdHJvbmc+zrS0psDttqm1pcHQse0osb612LLWv+I8L3N0cm9uZz4p1tDV0rW9ztLDx7XE1eK49raptaUoPHN0cm9uZz6/7NXVPC9zdHJvbmc+KaOs0rK/ydLUv7S1vdfUvLo8YnIgLz4NCtLUx7C1xNK70Km2qbWlvMfCvKO7usOwyaOsvdPXxc7Sw8fRodTx1eK49ru5w7u4tr/utcS2qbWlo6zIu7rzvfjQ0Li2v+4oPHN0cm9uZz5wdXNoPC9zdHJvbmc+KaOsuLa/7jxiciAvPg0Kzeqzybrzo6w8c3Ryb25nPsnMvNIo1LazzLLWv+IpPC9zdHJvbmc+vs274crVtb3E47XE1eK49raptaWjrMi7uvO3orv1JmhlbGxpcDs8L3A+DQo8YmxvY2txdW90ZT4NCgk8cD7P4NDF09DBy9XiuPbNvNLUvLDN+Lm6tcTQzs/zu6/A/dfTo6zE49OmuMPE3MDtveJHaXS1xMvEuPayv7fWtcS4xcTuwcujrLb4R2l0tcSy2df3PGJyIC8+DQoJtPOyv7fWtrzKx9Tasb612Na00NC1xKOsz8LD5srHR2l0tcTPwtTYsLLXsDwvcD4NCjwvYmxvY2txdW90ZT4NCjxociAvPg0KPGgyIGlkPQ=="3git的下載安裝">3.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上進行演示了~


4.設置您的身份信息

安裝完Git要做的第一件事就是配置你的身份信息,團隊開發,萬一哪裡錯問題了,誰背鍋?是把!
鍵入下述指令:

git config --global user.name "coder-pig"
git config --global user.email "[email protected]"

配置完後,把”“部分信息去掉,輸多一次上面的指令,可以看到是否配置成功

\

也可以鍵入下述指令來查看所有的git設置:

git config --list

\


4.獲取幫助

和其他的命令行一樣,git同樣帶有help指令,當遇到沒見過或者忘記了的命令的時候,可以鍵入:

git help init

把init改成你要查詢的那個指令即可!比如git help add

\

win下會打開一個Git的Manual(手冊)的頁面,可以在之類查看指令的一些用法
Ubuntu下則會直接在命令行輸出:

你也可以到Git官方手冊查找對應指令!


5.創建本地的代碼倉庫

你可以直接鍵入下述指令創建一個新的帶Git倉庫的項目:

git init GitForTest

\

把GitForTest改成你想創建的工程名即可!接著我們可以來到新創建的工程的目錄下,這裡需要
修改下讓隱藏文件可見,就可以看到.git的文件夾裡,裡面東東就是我們git倉庫的東東了,切記
別隨意去改或者刪除裡面的東西!(你也可以鍵入:ls -ah來查看隱藏文件)

當然假如你已經有項目了,想在之前項目的基礎上添加Git倉庫,那麼通過命令行或者git bash來到當前工程的文件夾目錄下,鍵入下述指令即可為你的項目添加本地Git倉庫:

git init

6.將文件放入暫存區

我們可以把新建或者修改過後的文件,我們可以通過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的文件了!

當然還有其他幾個指令,限於篇幅,有興趣的可以自己研究研究!


7.將暫存區的內容提交到本地倉庫(History)

我們可以通過git commit -m “xxx”指令將暫存區的內容提交到倉庫中

git commit -m "修改了xxx"

後面的-m是對本次提交的說明,”xxx”是說明內容,不該偷懶省去,假如你這裡不
輸入,-m “xxx” 的話,也會讓你進入Vim來編寫聲明信息的~所以建議還是在這裡進行提交內容的說明吧!

\

另外,我們的項目可能存在一些幾百年不變的或者自動生成的文件,比如lib,gen,bin文件夾等,我們沒必要
每次都把這些都commit,我們可以在.git同級的目錄下創建一個名為.gitignore的文件,然後編輯內容,把
不需要提交的文件寫上,那麼commit的時候就會自動忽略這些文件的了~:


8.查看當前工作區與暫存區的狀態

我們可以用git status指令來查看工作區與暫存區的當前情況,比如工作區有什麼文件和暫存區的文件
對比,發生了改變,要不要add下?又比如暫存區裡有東西add了,但是還沒提交等等,直接鍵入下述指令即可:

git status

比如我這裡修改了下README.md文件~
只是改了沒add:

\

add文件後:

commit提交暫存區內容

恩,很簡單,另外,你還可以用下述指令,讓結果以簡短的形式輸出~

git status -s

9.查看工作區與暫存區的差異

上面我們可以通過git status獲取當前工作區與緩存區的狀態,僅僅是狀態,
假如我們需要查看發生改變的內容,那麼你需要鍵入下述指令:

git diff

\

這樣就可以看到當前的工作區與暫存區中對比,做了哪些修改!
PS:上面是我們在README.md文件裡添加了一條語句,然後再輸入git diff!


10.查看提交更改的記錄

還記得上面的網購的例子嗎,我們可以在我的訂單中找到自己的訂單記錄,
同樣,在git中,我們也可以查看所有commit的記錄!可以鍵入下述指令:

git log

\

當然,你也可以調用下述指令獲得更精簡的結果

git log --oneline

\

如果上面還滿足不了你的話,可以參考:Viewing the Commit History
對log進行定制,比如:

\


11.刪除文件 + 文件恢復(未add到暫存區)

我們可以直接右鍵刪除一個文件,又或者進入命令行,鍵入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!)


12.文件恢復(已add到暫存區,未commit)

假如你已經把文件用git add到了暫存區,那麼此時你直接用checkout文件是沒有作用的!
我們需要通過git reset指令來廢除此次修改記錄(版本回退),讓當前文件回到上一次提交時的狀態!
鍵入:

git reset HEAD xxx.xxx

此時再調用:

git checkout -- xxx.xxx

文件即可恢復原樣!


13.文件恢復(已commit)——版本回退

假如,我們的文件修改已經commit了,而你無端端的又後悔了,想恢復成上一次commit時的文件,
又或者上上次的,這時候你可能開始方了,不過Git為我們提供了時光機(版本回退),我們可以
通過下述指令回退到上一個版本:

git reset HEAD^

\

恩,我們鍵入git log後可以看到版本已經回退到上一個版本了!
如果是上上個版本,你只需加多^,再上一個版本繼續加^,如此類推!
當然,除了上面的形式,你還可以根據版本號來回退,比如這裡我退到第一個版本:

git reset --hard 8c3f91f

嘿嘿,無壓力,你突然又後悔了,想回到新的那個版本,嗯…好吧,同樣是上面的指令:
不過版本號改成最新那次commit的版本號就可以了!

git reset --hard cf2d155

你可能會支支吾吾的過來對我說:”恩,那個我剛剛把命令行關了,那個最新的版本號找不著了,
git log也找不到那個最新的版本號,那我是不是不能回未來了?”幸運的是,Git時光機會記錄
你輸入的每一條指令,你只需鍵入下述指令:

git reflog

\

拿到版本號,git reset即可~


14.Git命令自動補全

輸入Git命令的時候按兩次Tab就可以了!


15.Git命令別名

如果想偷懶,想少敲幾個字母,可以為命令設置別名,然後鍵入別名就調用對應指令,比如將status設置成st:

\


16.小結

本節給大家詳解了Git的本地使用,大部分時間我們都是在本地上進行Git的一些操作,所以熟
悉這些命令很重要!當然這是需要一點點積累的,敲多了,敲起來就行雲流水了!下節開始,我們
來學習遠程倉庫,分支管理,團隊開發中的協作,等等~謝謝!


參考文獻

Pro Git(官方) Pro Git(oschina)
  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved