修改/恢復commit
在改寫程式,提交commit的反覆的過程中,有時會希望手上的程式能夠回到某個過去的狀態,以下的指令是能夠達成以上期望的指令,包括git commit --amend
以及git reset
。
git commit --amend
用途:修改已經提交的commit。
初始狀態:
使用情境:對程式做了些微的改寫,不想為此改寫提交另外的commit,想將所作的修正附加到已經提交的commit中,於是修改已經發出的commit。
1
2$ git add .
$ git commit --amend對比情境:”為此改寫提交另外的commit”。
1
2$ git add .
$ git commit -m "update"
git reset
- 用途:取消已經提交的commit。
- 初始狀態:
- 選項:
--hard
,--soft
,--mixed
,預設是--mixed
。git reset HEAD~
(Note:HEAD
是目前工作節點的指標,~
是往前1層)
git reset HEAD~~
(Note:HEAD
是目前工作節點的指標,~
是往前2層)
git reset --hard HEAD~~
(Note: 使用--hard
要格外小心,一不小心所有的編修都會消失。--hard
徹底刪除commit,也修改工作目錄)
- 藉由這個指令刪除工作區的內容:
git reset --hard HEAD
(Note: 回到提交最後一個commit提交後的狀態)- 初始狀態:
git reset --hard HEAD
- 初始狀態: