前言

使用 Git 也有一段時間了,但是一直以來都很依賴使用 GUI 來幫忙做事情,甚少使用指令。 在一次 GUI 改版後因為使用 GUI 的回應速度真的是太慢了,所以才開始學習使用指令來做事,也是這時才發現原來使用指令沒有想像中麻煩,也如預期中的非常快速。 因此這邊就我自己的使用心得來分享,也因為我在使用 git 指令時有很多設定是已經在安裝 GUI 時就設定完畢的,所以這邊的常用指令其實是就我個人使用上而言。 像是有很多 remote repository 的設定我不是使用指令來完成的,這部分的指令就之後有機會再補上了。

  • 安裝

下載路徑:https://git-for-windows.github.io/

GUI:https://git-scm.com/downloads/guis

下載安裝檔後基本上用預設值並一直按下下一步就好

Install_1 [圖 Install-1]

Install_2 [圖 Install-2]

Install_3 [圖 Install-3]

在 Powershell 更輕易的使用 Git(posh-git):

使用 PsGet 安裝

PsGet => Powershell安裝套件的好幫手

posh-git => 在 powershell 使用 git 的好幫手

1
2
(new-object Net.WebClient).DownloadString("http://psget.net/GetPsGet.ps1") | iex
Install-Module posh-git

Install_4 [圖 Install-4]

但若使用這種方式安裝,每次關掉 powershell 要再使用就需要先下個

1
Import-Module posh-git

才能使用。若不想這麼麻煩的話,打開一個新的 powershell prompt 直接輸入

1
Add-PoshGitToProfile

這樣就可以免除每次關掉都要再 import module 的窘境。

  • 產生 SSH Key (非 Windows 環境使用格式,適合用在 command line 環境中使用)

在 Windows下自產 SSH Key,而且不是 Windows 使用的格式我們需要使用剛剛安裝 Git for windows 時一起安裝的 Git Bash 環境來操作會比較方便。

若是產建 Github 所需要的 SSH Key 可以直接參考 Github 的說明

  • 產生 key
1
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

C 這個參數只是給的 commant 可加可不加,只是加上去方便做辨識

b 則是密鑰長度,基本推薦 2048 或 4096

t 則是使用的加密算法,Github 使用的是 RSA 演算法

  • 選擇存放位置與設定 passphrase

SSHKey_1 [圖 SSHKey-1]

執行完成後你應該就會看到指定路徑上面會有兩個檔案,副檔名帶有 pub 字樣的就是 public key,這兩個都是純文字檔案可以用 notepad 打開看看裡面的內容

  • 常用指令

add [告訴git哪些檔案要列入追蹤]

常用指令之一,把指定的檔案放入 staged area中,因為 commit 只會把 staged area 的檔案遷入。

1
git add file_locatioon

把所有有異動的檔案遷入

1
git add .
  • commit [讓進入stage area的異動變簽入git]

常用指令之一,git 的 commit message 其實可以接受多行,只要不要打最後一個單引號,按下 enter 的話就會跳到下一行去,想要結束的話就把單引號補上去即可。

1
git commit -m 'your commit message'
  • branch [git的強大之處 branch超好開,開免錢]

可以把本機的branch都羅列出來,算是方便一次瀏覽目前該repository的branch狀態。

1
git branch --list

常指令之一,通常建議 branch 名稱前面會多帶一層方便做管理,這個範例中 feature 就是這個 branch 的上一層名稱,在 GUI (ex. SourceTree) 中通常會用資料夾來表示。

1
git branch feature/my_branch_name

Branch-1.JPG [圖 Branch-1]

  • stash [保留做到一半的想法]

把該 repository 所有 stash 列出來

1
git stash list

將所有未入 staged area 的異動存入 stash中

1
git stash save 'your stash message'

Stash_1 [圖 Stash-1]

  • checkout [切換branch]

常用指令之一,將目前的 pointer 所在位置切換到指定的 branch 身上

1
git checkout [your_branch_name]

常用指令之一,會做兩件事情,先產生一個新的branch,二是將pointer切換到該branch身上

1
git checkout -b [your_branch_name]

Checkout_1

Checkout_2.JPG

  • remote [設定遠端repository]

將遠端的 ref 資訊顯示出來,在圖示中因為這個 repository 是從 githubclone 來的所以會顯示 ref 來源

1
git remote -v show

Remote_1

  • push [將成果交付出去]

將 local branch develop 的異動推到 remote branch develop

指令型態: git push

1
git push origin develop develop
  • log [看看歷史過程]

將 branch 的 log 以單行印出

1
git log --oneline

Log_1

將 branch 的 log 以圖形印出

1
git log --graph

Log_2

使用漂亮的格式印出

1
git log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit
  • 使用 GUI 介面

基本上到這個連結選一個自己喜歡的使用就好,只要懂 Git 的指令就不難理解那些介面的操作。

而個人在 GUI 的推薦上,就推薦 SourceTree 與 GitKraken 這兩套 GUI,其他不是不好用事這兩套太威了。

若是公司的流程有 Git-flow 的話則推薦 SourceTree,若不是使用 Git-flow 的話則推間使用 GitKraken 這套,這是因為 SourceTree 本身自帶 git flow 套件,與 Git -Flow 流程整合得很好。

參考資料