2018年9月11日 星期二

[Git] 101 剛好夠用的 Git 知識

Git 是現在最常用的版本控制工具(Version Control System, VCS),功能強大、指令繁多;但是對初學者而言,只需要學會 20% 的指令,就可以應付 80% 的狀況。

學習目標

  1. Git 安裝
  2. Git 基本概念
  3. 本機 Git 常用指令
  4. .gitignore 檔案

一、Git 安裝

請到 https://git-scm.com/downloads 下載安裝檔,在這裏我們以 windows 7 + Git Bash為例
大致上就是一個一直按下一步的過程,安裝完後,可以看到 「Git Bash」、「Git CMD」和「Git GUI」在 「Git」這個應用程式目錄中。
這裏主要是以 Git Bash 為例,其實 Git CMD 也差不多,如果你不習慣 linux 的指令列操作,可以用 Git CMD 來練習,初學 Git 不太建議用 Git GUI。

二、Git 基本概念

在 Pro Git 上有張圖可以參考
enter image description here

(一) Working Directory(untrack):

當我們在工作目錄中新建一個檔案,他預設的 Git 狀態就是 untrack,表示 Git 藉由比對他的索引,知道在目錄中多了一個檔案,但是這個尚未被 Git 列管。

(二) Staging Area

當我們使用
git add 檔案A名稱
表示我們告訴 Git ,請將「檔案A」列入 Git 的管理範圍,此時 Git 只知道==「檔案A」歸它管理,但是還沒有在 Git 檔案庫中儲存他的資料==。

(三) .git Repository

當我們使用
git commit 
表示將列管的所有檔案,其目前的內容,存入檔案庫中,萬一不小心檔案有問題,可以回復此時的狀態。

三、常用指令

1、開始在目前這個目錄中,使用 git 來管理我們的程式檔案

git init
這個會在目前的目錄下建立一個隱藏的 .git 目錄

2、環境基本設定

git config 

# 範例
# 設定你的使用者名稱(全域)
git config --global user.name john
# 設定你的信箱(全域)
git config --global user.email john@example.com
# 設定你的文字編輯器為「記事本」(預設為 vi,如果你不會使用 vi 請務必要執行此設定)
git config --global core.editor notepad
上述設定是全域設定,也就是說,其他的程式目錄,如果沒有特別指定,就使用全域設定。
如果你要在特定目錄使用另一個設定,就把 --global 這個選項拿掉:
# 先切換到要使用特別設定的目錄
cd 特定目錄
git config user.name david
git config user.email david@another.com

3、檢視你的設定

git config --list

4、檢查未處理的檔案狀態

git status

5、新增要追蹤的檔案

git add 檔案名稱

6、將檔案送交給 Git 檔案庫

git commit 
# 也可以執行 -m 選項,直接在指令列指定註解
git commit -m "First commit" 
Git 可以處理中文,但是在 Git Bash 和 Git CMD 裏中文顯示會出現亂碼;你可以使用 gitk 來查看送交紀錄;在 Android Studio 的 Git 整合環境中也可以正確顯示中文。

7、檢查送交(commit)的記錄

git log

8、修改最後一次 commit 的說明內容

git commit --amend
# 範例:修改上次 commit 的註解
git commit --amend -m "My first commit."

9、程式改不回來,抓取之前 commit 過的程式來用

git checkout 
# 從 524ba 那次的 commit 中,找出 MainActivity.java 這個檔案,覆蓋目前目錄中的 MainActivity.java 
git checkout 524ba MainActivity.java

10、圖形檢視模式

gitk

11、從 github 上複製專案到本機

git clone
# 範例
# 到我的 github 頁面,抓取 AdMob廣告範例 來看看

git clone git://github.com/kirin-lin/admobdemo.git
這會在目前的目錄下,建立一個叫 AdmobDemo 的專案目錄,並且將專案程式碼複製到該目錄。

(四) .gitignore 檔案

將不想被 Git 所管理的檔案名稱加入,Git 即會忽略它。
例如:資料庫檔案、暫存檔… 等

參考資料

1、Pro Git 電子書

沒有留言: