Git

版本控制系統,遠端空間是使用GitHub,UI操作版本可以參考 Source Tree。以下紀錄一些比較常用到的command。
Record some common git commands here. (Use GitHub)

Create repository

可以直接在網頁上操作,或是使用下方command。
You could create a new repository on the GitHub website. If you would like to use command, you could reference the command below.

echo "# newrepository" >> README.md
git init
git add README.md
git commit -m "first commit"
git remote add origin https://github.com/myGit/newrepository.git
git push -u origin master
  • git init

    在現在的folder內建立一個XXX.git檔案

  • git remote add origin https://github.com/myGit/newrepository.git

    增加遠端的repository

Common git flow

Steps Command Description
1 clone 將遠端的repository下載至local,只在第一次建立專案時使用
2 pull 將local的專案與遠端repository最新版本做同步
3 用其他IDE編輯program
4 add 將有修改到的檔案加入stage
5 commit 將已stage的檔案進行commit
6 push 將已commit的檔案同步到遠端repository
  • add的操作一般稱為stage,目的是標記要進行commit的檔案;之後進行commit時,只會commit有被stage的檔案。

Clone repository

git clone (remote repository url) (folder name)

Example:

git clone https://github.com/mygit/firstrepository.git firstRepository

Pull

git pull

將遠端repository的最新版本同步回local。

Add (Stage)

git add (file)
  • (file)

    要commit的檔案,包含檔名+副檔名

Example:

git add README.md

若要一次加入所有修改過的檔案,可以使用,

git add .

Commit

git commit

執行command之後會跳出 vi編輯器,上面會顯示這次要commit的資訊,如哪些檔案做了什麼修改等等,可以直接在commit資訊下方加入任意commit message。

vi編輯器的操作方式:(以下鍵盤操作)

鍵盤按鍵 用途
i 開啟編輯模式,開啟之後就可以輸入任意文字進行文字編輯
Esc 離開編輯模式,離開之後就可以輸入指令
:wq! 儲存修改並離開 vi編輯器
:q! 不儲存修改並離開 vi編輯器


若是不想用 vi編輯器 來編輯commit message,可以使用另外一個command,

git commit -m "(commit message)"
  • (commit message)

    修改紀錄

Example:

git commit -m "Add new Logo, modify login flow, ..."

Push

git push origin master

將已經commit的檔案同步到遠端repository。


——其他command——

Status

主要用來查詢檔案修改的狀態。

git status -s

這個command可以查詢檔案狀態,執行command之後會顯示所有修改過的檔案,並且標記檔案修改狀態,如哪些是add、哪些是modified、...。

File status

  • 白字 : 有被修改過的檔案
  • 紅字 : 被stage的檔案狀態。(M = Modify, ?? = Add)
  • 綠字 : 被stage的檔案狀態。(M = Modify, A = Add, R = Renamed)

  • 若是檔案在stage後又被修改,這時會同時顯示紅/綠兩種檔案狀態。

Diff

當你修改過任何的檔案內容之後、加入stage之前,可能需要確認目前檔案修改了哪些部分,這時就可以使用下方的command來查詢檔案修改狀態,

git diff -- (file name)
  • (file name)

    要查看修改狀態的檔案,包含檔名+副檔名

Example:

git diff -- git.md

File diff

  • 白字 : 未修改的部分
  • 紅字 : 刪除的部分
  • 綠字 : 新增的部分

Log

想查看整個專案所有的修改歷程可以使用,

git log

Example:

File diff

歷程紀錄最上方的是最新的commit版本,越下方是越舊的紀錄。

Checkout

主要目的是將現在的專案切換到指定版本,要特別注意的是 執行這個command後,任何沒有進行commit的檔案修改都將被捨棄。 當然執行這個command時,git system若偵測到有任何未commit的檔案修改,會跳出警示訊息,這時再進行確認也可以。

git checkout -- (file)
  • (file)

    要進行checkout的檔案,包含檔名+副檔名。

Example:

git checkout -- README.md

Stash

主要可以把目前所有的檔案修改都放到暫存。如果遇到工作到一半被打斷,而且需要去修改其他issue時,就可以使用stash把修改到一半的部分暫存起來,等目前的issue處理好後,再從stash把之前做到一半的工作搬回來繼續完成。

git stash

這個command是將目前所有的檔案修改丟到stash。

雖然git system會自動給予stash一個node ID,但當你有好幾個被打斷的工作(好幾個stash)時,你可能需要加入一些資訊來辨別不同的stash,這時可以使用,

git stash save "(stash message)"
  • (stash message)

    自己辨識用的stash訊息

當你想把指定的stash搬回專案時就要使用,

git stash apply

當stash被搬回專案之後,該stash就可以使用下方的command進行刪除,

git stash drop

當你只有一個stash時,可以直接使用上方的command;但若是你的stash不只一個,就可以使用下方command來指定你想刪除的stash,

git stash drop (node id)
  • (node id)

    git system為stash建立的node ID

若是想查詢stash的nodeID可以使用,

git stash list

results matching ""

    No results matching ""