Git版本控制入門(4) — git狀況劇


Posted by ai86109 on 2020-03-24


前面我們已經將git基礎的指令和github都大致介紹過了,有時間的話建議看完之後再來看這篇:

Git版本控制入門(1) — git新手包
Git版本控制入門(2) —branch
Git版本控制入門(3) — github

這邊用一些常遇到的狀況,來說明git其他的指令

狀況1:如果打錯commit message 可以改嗎?

假設我要commit一個新的版本,而我的message為new version,但我打錯了
git commit -am ‘ner version’
這時候只要git commit --amend ,進入更正後 :wq 儲存就完成修改。

但如果commit又push就沒救了,所以在push前還是好好檢查才是。

狀況2:如果commit 但後悔了呢?

你可以有三種程度的回復:

(1)只移除commit,檔案的變更都保留
git reset HEAD^ --soft

(2)移除commit & staged (也就是去除add & commit的動作),但變更都保留
git reset HEAD^ (預設值為git reset HEAD^ --mixed)

(3)我的變更都不要了,直接回到上一版
git reset HEAD^ --hard
更完整的比較可以參考這篇:Git reset 的三種模式( soft mixed hard )比較

來講一下這邊一直出現的HEAD^是什麼
HEAD 是最新版本
^ 是前一個
所以組合起來就是前一版的意思
當然這邊的HEAD^可以替換成版本的流水號,流水號可以用git log查看
寫成git reset 166beff11353838f4da48eceec3d478e685d3eae

狀況3:我還沒commit,但我改的東西不想要了

其實很簡單,git checkout --檔案名
如果全部檔案更動都不要了,git checkout --.

狀況4:如果我打錯branch名稱要改呢?

先checkout到要改名字的branch,git branch -m 新名字

狀況5:我想看不在local端的branch(可能是與同事協作的)

直接 git checkout branch的名稱 ,他就會自動幫你加入local端
另外,還要提一個叫做git hook的東西
什麼是hook呢?
hook是鉤子,當魚吃到餌時會扯動鉤子,你就會知道魚上鉤了,所以在程式裡hook代表,發生某事的時候通知我。

在.git資料夾中有一個hooks資料夾,打開裡面的檔案會有一些規範和功用,例如:pre-commit這個檔案可以在你commit前,幫你檢查程式碼是否符合規範等,若未來再專案協作上需要某些規範,就可以透過這邊自動幫你篩選及判斷。


Git的入門系列文到這邊也差不多結束了,雖然看起來好像講了很多,但其實還有像是rebase, cherry-pick, tag等等指令都沒有提到,之所以不講是因為最常用的80%你都已經學到了,git還有許許多多功能,待你未來工作、專案碰到的時後再學就可以,希望這樣的git系列文對你入門git有所幫助。


#Git #Github #git head #git hooks