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前還是好好檢查才是。

延伸閱讀:Git Commit Message 這樣寫會更好,替專案引入規範與範例


狀況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







Related Posts

Linkedin  Java 檢定題庫 static import

Linkedin Java 檢定題庫 static import

180. Consecutive Numbers

180. Consecutive Numbers

Function component vs Class component

Function component vs Class component


Comments