顯示廣告
隱藏 ✕
看板 KnucklesNote
作者 Knuckles (站長 那克斯)
標題 [AndroidStudio] 使用 Git 版本控制系統(VCS)
時間 2017-11-14 Tue. 21:22:26


本文使用的 Android Studio 版本為 3.0.1
作業系統為 Windows 7 64-bit 版

在 Android Studio 中,內建的版本控制功能叫做 VCS (Version Control System)
支援很多種版本控制系統,我們要用其中的 Git 功能
Git 是目前最多人在使用的一種分散式版本控制系統

在本文會示範開一個新的專案,使用 Commit 產生一個記錄點
修改程式後再產生一個記錄點後,查詢兩個記錄點的差異

再來會使用分支(Branch)的功能產生兩組程式
分別修改兩組程式的內容後
再使用 Merge 的功能將兩種版本的程式合併


安裝 Git for Windows

在 Windows 下的 Android Studio 中,
要先安裝 Git for Windows

https://git-scm.com/download/
點選「Windows」
[圖]


選擇 32-bit 或 64-bit 的版本
[圖]


下載安裝時都使用預設選項即可
64-bit 版本安裝的資料夾為「C:\Program Files\Git\」


在 Android Studio 中設定 Git

在「File」/「Settings」中,選擇「Version Control」的「Git」
然後將執行路徑設為「C:\Program Files\Git\cmd\git.exe」
[圖]


按一下旁邊的「Test」看看能不能執行成功
[圖]

確認沒問題後按「ok」關閉設定


開新專案,啟動並初始化 Git

開啟要使用 Git 的專案,或是新增一個測試用的專案「GitExample」

接著點上方選單的「VCS」/「Enable Version Control Integration」
[圖]


要使用的版本管理系統選擇「Git」
[圖]


按確定後,就會在專案的目錄下加上一個隱藏資料夾「.git」
這個叫做 Git 的倉庫 Repository
各種版本更動的記錄都放在這裡面
[圖]


另外還會自動新增一個檔案「.gitignore」
可以在這設定不要加進版本控制的檔案

在 Android Studio 左邊的瀏覽視窗由「Android」切換為「Project」
然後點開「.gitignore」檔,注意是專案目錄下的,不是 app 目錄下的
[圖]


檔案上方出現是否要安裝 plugins 的提示,點「Install plugins」
[圖]

(沒有的話可以在「File」/「Settings」的 Plugins 裡
 點「Browse repositories」後搜尋 .ignore 安裝)

[圖]

安裝完後要重開 Android Studio


如果之後把 Git 的記錄弄壞了,或是想要刪掉全部重弄的話
可以在「File」/「Setting...」/「Version Control」
點一下 Git 的目錄後,點右邊的刪掉
[圖]


然後將專案目錄下的 .git 資料夾刪除
就可以回復成一開始沒有版本記錄的狀態了


第一次 Commit

將左邊瀏覽視窗由「Project」換回「Android」
在設定了版本控制後,可以看到在專案中的檔案名稱都變紅色了
代表這些檔案還沒有加進版本控制
[圖]


可以使用 Git 的 Add 將檔案加入版本控制,檔名就會變成綠色
或是直接使用 Commit 將檔案加入版本控制並產生一個記錄點

點一下「VCS」/「Commit Changes...」
[圖]


或是點工具列上的按鈕
[圖]


勾選「Unversioned Files 39 files」將所有檔案加進版本控制
在「Commit Message」輸入註解「第一次 Commit」後,點「Commit」
[圖]


若出現這個視窗,先不管警告訊息,點「Commit」
[圖]


若出現這個視窗,輸入帳號與E-mail,建立一個 Git 使用者
[圖]


若出現這個視窗,問要不要把 .idea\vcs.xml 加進 Git,點「No」
[圖]


Commit 完成後,檔名就會從紅色變回白色了


修改程式後再次 Commit

修改 MainActivity.java 看看,隨便加個兩行程式
[圖]

可以看到檔名變成藍色了,代表這個檔案從上次 Commit 後有修改過
新增的兩行程式前也會看到多了綠色區塊,
代表這兩行是新增的

再按一次「VCS」/「Commit Changes...」
[圖]

可以看到這次只有一個檔案需要 Commit
而且下面會將修改的部份標記出來
輸入註解後按 Commit

要查詢檔案的修改過程的話
先點一下想要看的檔案,例如 MainActivity.java
然後點「VCS」/「Local History」/「Show History」
[圖]


[圖]


想要回復某次的修改的話,可以在右邊顯示的程式碼差異處,點中間的 >> 符號
[圖]


或是對左邊的某時間點的檔案點右鍵,選「Revert」
[圖]


就可以將程式碼回復到想要的時間點了


有使用版本控制後,下方視窗的頁籤會多一個「Version Control」
切換到「Version Control」裡的「Log」可查看 Commit 記錄點的分支圖
[圖]



使用 Reset 回復至某次的 Commit 記錄點

如果 Commit 後發現註解寫錯,或是程式碼還有地方加進去
想要刪除這次的 Commit 的話,可以使用 Reset

Reset 還有各種不同的模式,先記得
--soft 代表程式碼不變,只將 Commit 點刪除 (想要再改一下重新 Commit 的時候用)
--hard 代表除了將 Commit 點刪除,還會將程式碼還原 (程式碼也要重寫的時候用)

以下測試我們再加一個 Commit 點,然後使用 Reset 回復到上一個點

在程式中加入一行
    String test2 = "測試 Reset";

然後執行 Commit,註解輸入「測試 Reset」

現在在分支圖可以看到有三個 Commit 記錄點了
[圖]


此時我們後悔剛剛加上的第三個 Commit 點了,
可以在第二個 Commit 點按右鍵,選「Reset Current Branch to Here...」
[圖]


出現四個選項,我們選「Soft」就好
[圖]


執行完 Reset 後,在分支圖可以看到變回只有兩個 Commit 點了
並且程式中的 String test2 = "測試 Reset"; 還在,
若是 Reset 選擇用「Hard」的話,那行程式就會被刪除了


新增分支 Branch

當想要測試新功能,但又怕把本來的程式弄壞
希望隨時可以換回本來的程式
這時就可以使用分支的功能

在分支圖上對最後一次 Commit 的點按右鍵,選「New Branch...」
[圖]


輸入分支名稱「TestBranch」,勾選「Checkout branch」
[圖]


可以看到目前這個 Commit 點同時為 master 與 TestBranch 兩個分支
[圖]


在右下角可以看到有顯示「Git: TestBranch」
代表目前是在 TestBranch 這個分支,點一下後有選單可切換至別的分支
[圖]


修改程式,隨便加個函數 testBranch() 代表在這個分支新增的測試功能
    void testBranch() {
        Log.d("test","測試分支功能");
    }

然後執行 Commit
[圖]


可以看到分支圖變成這樣,master 分支留在了上一個 Commit 點
[圖]


這時想要回去 master 分支寫主要的功能
點右下角的「Git: TestBranch」,選分支「master」,選「Checkout」
[圖]


可以看到右下角改為顯示「Git: master」,代表現在是在分支 master
而分支圖變成這樣
[圖]

黃色的 HEAD 符號移到了分支 master

此時程式又恢復到第二次 Commit 時的狀態
修改程式,加上一個函數 testMaster()
    void testMaster() {
        Log.d("test","測試 master 功能");
    }

然後執行 Commit
[圖]


分支圖會變成這樣
[圖]

從第二個 Commit 點後產生了分歧


使用 Merge 合併分支

當分支 TestBranch 的測試功能寫好後,想要將修改的內容合併回分支 master
先回到分支 master 後執行一次 commit
然後點選單的「VCS」/「Git」/「Merge Changes...」
[圖]


將要合併的分支 TestBranch 打勾後,點「Merge」
[圖]


會發現程式出現了衝突,
可選擇衝突的地方要使用目前 master 的版本(Accept Yours)
或是使用分支 TestBranch 的版本(Accept Theirs)
或是使用 Merge 將兩個版本的內容都加進來
[圖]


我們想要將兩個版本寫的函數都加進來,所以點「Merge」
接著會顯示三個程式版本,左邊是目前 master 的,右邊是分支 TestBranch 的
中間是兩個分支合併後的
[圖]


先點一下上方的「Apply All Non-Conflicting Changes」按鈕
將兩邊沒衝突的修改加進來
[圖]


接著在兩邊標了紅色衝突的程式,都點一下代表 Accept 的箭頭加進來
[圖]


此時會顯示衝突都解決了,點「Apply」結束 Merge
[圖]


結束 Merge 後,右下角的分支名稱會顯示「Git: Merging master」
要再執行一次 Commit 做個記錄

執行完 Commit 後,右下角顯示「Git: master」
在左下角 Version Control 的 Log 視窗
就會看到兩條分支線合併為一個點了
[圖]




參考

https://litotom.com/2016/05/09/在android-studio中取得github專案/
介绍Android Studio使用Git最详细的文章

--
※ 作者: Knuckles 時間: 2017-11-14 21:22:26
※ 編輯: Knuckles 時間: 2018-02-04 20:16:54
※ 看板: KnucklesNote 文章推薦值: 0 目前人氣: 0 累積人氣: 5467 
分享網址: 複製 已複製
r)回覆 e)編輯 d)刪除 M)收藏 ^x)轉錄 同主題: =)首篇 [)上篇 ])下篇