或許是介紹Android Studio使用Git最詳細的文章

來源:互聯網
上載者:User

標籤:開啟   start   日誌   輸入   好的   baidu   ash   terminal   自動   

前言

本文較長,圖片很多很多,流量黨慎入
使用Git已經有一段時間了,但是之前都是使用Git Bash,在Android Studio上使用Git一開始不是很習慣,就像用慣了SVN來使用Git一樣,琢磨了一段時間的Android Studio,也看了我覺得為數不多但是很有品質的介紹AS的書籍 《Android Studio實戰 快速、高效地構建Android應用》,強烈安利大家哦!所以就寫了這篇文章跟大家一起學習如何在Android Studio高效地使用Git。另外如果大家想要拿來學習的話可以直接fork我的項目 。
另外一點需要說明的就是本文中大量使用Android Studio的快速鍵,如果你不熟悉,可以看看我的另外一篇文章 。

安裝Git

我使用的是Windows,所以我這裡只能介紹Windows下安裝Git的過程了。
點這裡選擇符合你的版本,直接安裝就行了。
安裝完成之後,在開始菜單中找到Git-->Git Bash,如果出現類似下面的對話方塊的話就證明安裝成功了。

安裝成功之後,需要配置一下你的資訊,直接在上面的命令列中輸入以下命令:

$ git config --global user.name "Your Name"$ git config --global user.email "[email protected]"

注意:
1.將上方的Your Name換成你自己的名字,隨意起都行。
2.將上方的[email protected]換成你自己的郵箱。
3.講一下git config命令的--global參數,用了這個參數,表示你這台機器上所有的Git倉庫都會使用這個配置,當然也可以對某個倉庫指定不同的使用者名稱和Email地址。

Android Studio配置Git

使用快速鍵Ctrl+Alt+S開啟Settings,接著點擊Version Control --> GitPath To Git Executable上輸入Git的存放位置,如:

之後點擊旁邊的Test按鈕,如果出現如下的成功提示,說明Git配置成功。

接著按照配置你的Github帳號密碼,輸入完成之後點擊Test按鈕,如果帳號密碼都正確的話就會提示成功,那麼就可以繼續往下走了:

建立本地倉庫

不管你是剛剛建立的項目,亦或是已經寫好的項目,進行的操作都是一樣的。
這裡我以建立一個名為MyGit的項目為例子,如果你想練習,也可以到這裡fork一下。
對於一個已經建立好的項目,找到功能表列上的VCS,按照進行操作:

選擇項目的根目錄為git初始化的目錄:

初始化之後你會發現原本檔案的檔案名稱都是白色的,現在變成了棕色,這表示檔案已經被git跟蹤了,但是並沒有添加到倉庫中:

忽略檔案

我們知道,在git初始化一個倉庫的時候會自動產生一個.gitignore檔案,這個檔案用來忽略那些不用加入到倉庫的檔案,在我們這個工程中總共產生了兩個.gitignore檔案,分別是在項目根目錄下,以及在app檔案夾下。我們可以對這些檔案進行編輯,表示我們需要忽略哪些檔案,但是一般情況下,我們選擇預設就好,除非你有需要就進行適當的修改:

添加檔案

添加檔案就如git命令中的git add,在Android Studio中add的方式有四種,但是都是大同小異,讓我來一一舉例:

1.選中項目的根目錄,右鍵選中Git,再選中Add,如:

2.選中項目根目錄,點擊功能表列中的VCS菜單,選中Git-->Add,如:

3.使用快速鍵Alt+9,或者點擊螢幕下方的Version Control工具按鈕
開啟版本控制的視窗,可以看到應該是如的樣子,該視窗有兩個下拉欄,一個是Default,用來記錄已經添加的檔案,另一個是Unversioned files,用來記錄已經被跟蹤但是未添加的檔案。

右鍵Unversioned files,選中Git-->Add,如:

4.使用快速鍵Ctrl+Alt+A

add之後檔案名稱變成了綠色,這是代表已經添加進倉庫為檔案,接下來就可以commit檔案了,使用快速鍵Ctrl+K或者選中工程根目錄右鍵Git-->Commit Directory可以調出commit視窗,如下所示,在其中選擇你想要提交的檔案,填寫提交的資訊,在Author文字框中可以填寫提交此次提交的操作者名字,如果不填寫的話,就會預設是之前配置Github帳號的使用者名稱。可以看到,提交之後檔案名稱重新變回了熟悉的白色

提交成功之後,你可以使用快速鍵Alt+9,或者點擊螢幕下方的Version Control工具按鈕,切換到Log菜單查看Log日誌,如所示:

如何clone項目

使用Git clone項目到本地中是很簡單的,在Android Studio中也是如此,首先找到你喜歡的項目,fork到你自己的倉庫之後,點擊Clone or Download按鈕,複製地址,如所示:

接下來回到Android Studio,按照的操作可以開啟clone的對話方塊,在地址欄中粘貼剛才複製的地址,點擊Test按鈕,測試是否可以通過,如果成功,那麼久可以點擊Clone匯入項目了。

** 回到我們最開始講的MyGit項目,首先我們需要模仿一下在日常開發中使用Git的情形,例如我們經常會在分支上進行工作,所以熟練地掌握分支工作的流程以及技巧是十分重要的,接下來我會使用具體的例子跟大家一起瞭解如何在Android Studio上使用分支進行開發。
以下舉得例子將會圍繞Git的一種工作模式,即:Git Flow,如果你對此不是很瞭解,那麼推薦你阮一峰老師的文章 。**

Git flow

Git flow是廣泛採用的一種工作流程

他的主要特點有兩個:

1.首先,項目存在兩個長期分支

  • 主分支master
  • 開發分支dev

前者用於存放對外發布的版本,任何時候在這個分支拿到的,都是穩定的分布版;後者用於日常開發,存放最新的開發版。

2.其次,項目存在三種短期分支

  • 功能分支(feature branch)
  • 補丁分支(hotfix branch)
  • 預發分支(release branch)
新增功能1——顯示Hello World

正如我們在介紹Git flow介紹的,master分支只是用於產品的發布,在平時的開發中是不會使用它的,而只會使用dev分支,但是如果我們有了新的功能,一般是會在dev分支中在建立一條該功能的分支,所以我們應該這樣做。

建立dev、feature-1分支,並且我們需要轉到feature-1分支上

在Android Studio中,我們可以很方便的管理分支,在主介面的右下角,點擊Git可以出現當前的分支,預設為master,我們選中New Branch,如所示:

在彈出的對話方塊中我們輸入feature-1,點擊OK,這樣我們不僅建立了feature-1分支,並且正處於該分支中,接下來按照同樣的方法建立dev分支,如果不出意外的話,我們現在應該是處於dev分支上,但是因為我們現在要開發功能1,所以必須轉換到feature-1分支上,按照的操作,我們能夠回到feature-1分支上。

接下來開啟Log,我們應該能夠看到如下的情景:

可以看到我們現在有三個分支:master、dev、feature-1,但是AS提示我們應該有四條分支,其實HEAD就是當前活躍分支的遊標。形象的記憶就是:你現在在哪兒,HEAD 就指向哪兒,所以 Git 才知道你在那兒!不過 HEAD 並非只能指向分支的最頂端,實際上它可以指向任何一個節點,它就是 Git 內部用來追蹤當前位置的標記。我們可以使用下面的圖來示範當前分支的情況:

完成功能1
/**     * feature-1     * display HelloWorld     * @param view     */    public void feature1(View view) {        if (btn_feature_1.getText().toString().equals("功能1")) {            btn_feature_1.setText(R.string.feature_1_dis);        } else {            btn_feature_1.setText(R.string.feature_1);        }    }

好了,功能1編寫完成,那麼就提交吧!老方法:Ctrl+K進行提交,按照填寫提交資訊,每一次的提交資訊最好能夠詳細並且格式規範,這樣以後再查看Log的時候就會比較方便。

點擊Commit按鈕提交完畢之後,可以看到現在的log圖變成了:

我們可以開啟Log圖的右側,他列出了目前正在被Git跟蹤的所有檔案,我們選中MainActivity.java,點擊上邊的第二個按鈕Show Diff(顯示差異)

在彈出的介面中可以顯示該檔案的目前的版本和master分支中的該檔案的差異,我們可以使用Esc快速鍵退出該介面,如所示:

將feature-1分支合并到dev分支上

如所示,選中dev分支並選擇checkout:

你會發現現在代碼回到了最開始的狀態,現在選中feature-1分支並選中merge,準備將feature-1分支合并到dev分支上:

再來重新看一下Log圖,他長下面這樣,可以看到現在feature-1分支已經與dev分支合并,並且現在他們是處於同一狀態的:

最後的最後,我們需要刪除已經完成任務的feature-1分支,以免分支過多管理混亂。

新增功能2——顯示Hello Android

同樣的道理,我們可以按照如下的步驟這樣做:

1.遷出dev分支,並且建立分支feature-2之後遷出feature-2分支,具體的步驟我就不再示範了,跟上面的是一樣的。

2.開始擼代碼。

 /**     * feature-2     * display HelloAndroid     * @param view     */    public void feature2(View view) {        if (btn_feature_2.getText().toString().equals("功能2")) {            btn_feature_2.setText(R.string.feature_2_dis);        } else {            btn_feature_2.setText(R.string.feature_2);        }    }

3.使用快速鍵Ctrl+K提交feature-2的修改,並填寫提交資訊。

4.切換回dev分支並且合并feature-2分支之後刪除feature-2分支。
如果不出錯的話,你的Log應該是下面這樣的:

在dev分支上增加功能3——Hello Java

同樣的道理,這裡我就不再一一示範,如果按照上面的步驟做的話,最後的Log應該是這樣的:

重點來了,老闆說了,新開發的功能3不喜歡,需要刪除了功能3,咋辦呢?

這裡就需要講到Git的回退了,在Android Studio中提供了兩種回退的方式:Git revert以及Git reset。

Git revert

Git revert可以將版本回退到上一步,但是會新增一個提交,他的流程就像下面這幅圖一樣:

1.首先開啟Log,找到功能3的提交,右鍵選擇複製雜湊碼(Copy Revision Number),如所示:

2.開啟Android Studio的終端Terminal,他就在Version Control的旁邊,之後輸入以下命令按斷行符號鍵:

git revert 9c834d8c66598fb132a0cc8e4c1f8c341d058f3e

那一段很複雜的數字字母就是我們剛才複製的雜湊碼

如所示:

3.之後終端會列出此次提交的具體資訊,如果確認要回退,請輸入:q儲存此次操作並且退出會話
現在你可以看到,他確實增加了一次提交,並且回到了上一版的內容,Log應該是這樣的:

Git reset

相比之下,Git reset就要乾脆的多,與Git revert的功能一樣,它也可以將代碼恢複到上一個版本,但是不會新增一次提交,他的流程如下:

因為我們需要刪除功能3,並且讓Log看起來並沒有revert的這一次提交,所以我們應該在dev分支上後退兩步,確實是這樣的對吧!

1.點擊功能表列上的VCS-->Git-->Reset HEAD,開啟對話方塊,在To Commit文字框中輸入HEAD~2,就像這樣:


2.點擊Reset按鈕之後,你可以發現Log變了,變回原來那個熟悉的畫面了:

master分支上被修改了

突然你發現你的同事在master分支上提交了兩次,分別是增加了功能1和功能4,但是其中的功能1很顯然HelloWorld被寫成了WorldHello,例如這樣的:

 /**     * feature-1     * display WorldHello     * @param view     */    public void feature1(View view) {        btn_feature_1.setText(R.string.feature_1_dis);    }    /**     * feature-4     * display Hello     * @param view     */    public void feature4(View view) {        btn_feature_4.setText(R.string.feature_4_dis);    }

提交更改,之後Log應該是這樣的:

我們依舊用示範圖表示當前分支的發展情況:

Rebase

老闆說了,master分支只要功能4不需要功能1,而dev分支上的功能1、2全部都要合并到master分支上。那麼這個時候我們就可以使用rebase了。
git rebase用於把一個分支的修改合并到當前分支。現在我們切換到master分支,將dev上的做修改加入到master中,所以我們選擇rebase,在Android Studio中提供了功能十分強大的rebase。

1.點擊功能表列上的VCS-->Git-->Rebase,如所示:

2.在彈出的對話方塊中,我們在Onto的下拉欄中選中dev分支,表示我們需要將master分支rebase到該分支下。

3.點擊Rebase之後,你會發現Android Studio彈出對話方塊,顯示master分支的兩次提交,需要我們做出選擇,如所示:

4.因為我們不需要master分支上的功能1但是需要功能4,所以在功能1的提交上我們選擇skip(跳過這個提交),在提交4上選擇pick(挑選此次這個提交),點擊 Start Rebasing,我們可以看到又有對話方塊彈出,此次是讓我們對每個檔案進行挑選,如所示:

5.對於每一個檔案,你可以選擇接受你的那一部分,或者接受另一隻分支上的內容,又或者你可以點擊Merge對檔案進行篩選。我們點擊Merge按鈕,可以看到有三個檔案呈現在螢幕上。其中中間的檔案是最後的結果,左邊的為當前分支master分支,右邊的為dev分支,你還可以發現在修改過的每一行中都存在一個X >>符號,點擊X表示不需要這一行的修改,點擊>>表示接受這一行的修改,我們甚至還可以像在編輯器中那樣複製、粘貼、編輯內容,我們最終作出的選擇如所示,之後可以點擊Apply進行儲存,如果你不想儲存,那就點擊Abort終止此次修改:

6.對於剩下的兩個檔案也做相同的處理,之後我們可以看到master分支已經有了dev分支的功能1和功能2和自身的功能4,並且去掉了自己之前的功能1,可以看一下Log,如下所示:

我們依舊使用示範圖來表示最後的分支情況:

推送到遠程倉庫

推送很簡單,你可以導航到功能表列VCS-->Import Into Version Control -->Share Project on Github,如所示:

在彈出的對話方塊中填寫遠程倉庫的名稱,點擊Share:

之後你就可以在你的Github上面看到這一次的推送了。

本地所做的修改如何同步到遠程倉庫

現在我需要在工程中加入一些檔案,例如說我建立了一個screenshots檔案夾,並在其中添加了這篇文章需要用到的,那麼如何將這些檔案一起同步到遠程倉庫呢?其實很簡單。

1.使用快速鍵Alt+9或者點擊工具按鈕開啟Version Control,右鍵Unversioned Files,選擇Git-->Add,將所有檔案加入Git中,如:

2.右鍵Default,選擇Commit所有的檔案之後填寫提交資訊,如:

3.使用快速鍵Ctrl+Shift+K或者右鍵工程根目錄,選擇push項目,如所示:

4.在彈出的對話方塊中點擊Push按鈕,就可以將所做的修改同步到遠程倉庫了,如:

5.對於修改過的檔案想要同步到遠程倉庫,按照同樣的步驟就行了,這裡不再贅述了。

後記

這篇文章有點長,圖也很多,我也寫了很久,有的時候思路不清晰也混了(尷尬臉),所以難免會有錯誤,還請大家批評指正,大家互相學習,希望你能夠學到更多Android Studio的知識。

或許是介紹Android Studio使用Git最詳細的文章

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.