修改/恢復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