---
# System prepended metadata

title: Git 修改 Commit
tags: [Git]

---

# Git 修改 Commit

### 修改最後一次 Commit
`git commit --amend -m '<commit message>'`
但若原先的 commit 已 push 過，修改完再 push 會有衝突，此狀況不推薦使用 `--amend`

### 修改最後 N 次 Commit
* `git reset` 是恢復到某次 commit 記錄的命令，有三種常用模式：
  * mixed(預設模式): `git reset <commit-id>`
  * Soft: `git reset --soft <commit-id>`
  * Hard: `git reset --hard <commit-id>` 完全把這次 commit 之後做的事情消除

`git reset` 跟 `git commit --amend` 一樣都會修改 git 的 commit 歷史
`git reset` 預設模式再 `git checkout <filename>` 也會變得跟 Hard 一樣

###### tags: `Git`