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 電子書

沒有留言: