此篇記錄如何安裝 Git,以及 Git 的一些基本指令。
如何安裝 Git?
Windows:
在 Git 官網上下載即可。安裝完開啟 git-bash 輸入 git --version,確認是否安裝成功並確認版本。
Mac:
在 terminal 中一樣輸入 git --version,MacOS 版本在 10.9 以上就會連去安裝。
Git 基本指令
git init
:在需要使用 Git 做版本控制的資料夾下使用。初始化後,Git 就知道要對指定資料夾做版本控制。在指定資料夾下會自動新增 .git
的資料夾。
git status
:查看資料夾內檔案狀態。
git add
:決定是否加入版本控制。
- untracked:未加入
- staged:加入
git add .
:將資料夾內所有檔案都加入版本控制。
git add <filename>
:將指定檔案加入版本控制。
git rm --cached <filename>
:從 staged 移回 untracked(不做版本控制)。
git commit -m "msg"
:新建一個版本, msg 可以寫入此版修改了什麼地方。
git commit -am "msg"
:git add .
+ git commit -m "msg"
。只能用於已經加入 staging area 後修改過的檔案,新建且還沒加入版本控制的檔案還是需要先使用 git add
加入版本控制。
git log
:查詢歷史紀錄。
git log --oneline
:顯示較短版本的歷史紀錄。
git checkout <branch>|<版本號>
:切換到某條分支或是切換到某個版本。
git checkout master
:切換回最新狀態。
git diff
:在 commit 前可以看檔案改了什麼內容。
其他指令可以在 Git 的官網查詢使用方式。
永不加入版本控制的檔案處理方式
有些檔案一直都不會加入版本控制,那每次 git add
的時候,就不能用 git add .
,因為會涵蓋到不打算加入版本控制的檔案(假設此檔案是text.txt)。但要一個一個輸入 git add
又太花時間。此時可以建立 .gitignore
的檔案,將 text.txt 名稱寫進去,如此一來便可直接使用 git add .
,也不怕涵蓋到 text.txt。步驟如下:
touch .gitignore
:建立 .gitignore 檔案。vim .gitignore
:進入 .gitignore 編輯,寫入 text.txt。- 按
:wq
跳出 vim 後輸入git status
查看狀態,會發現 text.txt 已經不在 untracked 的狀態上了。
其他狀況劇
commit 後又反悔
git reset HEAD^
:
--mixed
(預設):取消最新的 commit(git log
會看到上一版的 commit),修改或新增的檔案會被放回 working directory 裡,需要重新加入版本控制。--soft
:取消最新的 commit(git log
會看到上一版的 commit),修改或新增的檔案會被放回 staging area 裡。--hard
:修改或新增的檔案皆會不見,整個資料夾會回到上一版 commit 的狀態。
ref:〈Git reset 的三種模式( soft mixed hard )比較〉
修改 commit msg
git commit --amend
:可以修改最新送出的 commit msg。
試過git checkout
到前幾版的 commit 版本號,雖然在切換成指定版本號的時候可以修改 commit msg,但切換回 master(最新狀態)時,修改的 commit msg 就會不見。
還沒 commit 但改的東西不想要了
(以 windows git-bash 開發,與 Mac 的指令不同)
git restore <file>
:想要捨棄在上一版 commit 之後修改的內容,可以利用 git status
,會有提示告訴你怎麼回到上一版 commit 的狀態。如下圖:
如果每個檔案都想要回復成上一版的狀態,用 git restore .
即可。
但如果是新增的檔案並編輯(沒有 commit 過的)則不會被改回上一版。
客製化各個階段:git hook
hook 就像是釣魚時魚上鉤時釣竿會動,告訴釣客有魚上鉤了。在 git 裡可以用來偵測指令並做出反應。像是 commit 前檢查程式碼是否有符合規範等等。