Git amend 怎么用?如何修改最近的提交内容?

文章导读
Previous Quiz Next git commit --amend 命令是 Git 的一个强大功能,用于修改最近的 commit。它允许开发者更新 commit 消息、添加或移除更改,并修复错误,而无需创建新的 commit。该命令本质上用一个新的 commit
📋 目录
  1. A 历史重写方法的概述
  2. B 何时使用 git commit --amend
  3. C 何时不使用 git commit --amend
A A

Git - Amend



Previous
Quiz
Next

git commit --amend 命令是 Git 的一个强大功能,用于修改最近的 commit。它允许开发者更新 commit 消息、添加或移除更改,并修复错误,而无需创建新的 commit。该命令本质上用一个新的 commit 替换最后一个 commit,包含自该 commit 以来所做的任何更改。虽然非常有用,但使用时需要谨慎,因为它会更改 commit 历史。

历史重写方法的概述

Git 提供了多种重写历史的方法,例如:

  • git commit --amend

  • git rebase

  • git reflog

每种选项都提供不同程度的灵活性和控制,用于处理 commit 历史。

修复 Commit 消息中的错误

如果发现最后一个 commit 消息有拼写错误或表述不清,可以使用 git commit --amend 来修改消息:

git commit --amend

运行此命令会打开默认文本编辑器,允许你编辑 commit 消息。保存并关闭编辑器后,修改后的 commit 消息将替换原消息。

将遗漏的更改添加到最后一个 Commit

有时,你可能在 commit 前忘记暂存某些更改。与其为遗漏的更改创建新 commit,不如先暂存它们,然后 amend 最后一个 commit:

git add <file>
git commit --amend

修改后的 commit 将包含新添加的更改,有效地将它们与之前的 commit 合并。

从最后一个 Commit 中移除更改

如果最后一个 commit 错误地包含了某些文件或更改,你可以取消暂存或编辑这些更改,然后使用 git commit --amend 更新 commit:

git reset HEAD^ <file>
git commit --amend

这会从 commit 中移除指定文件,同时保持其他更改不变。

更改最后一个 Commit 的作者

要更改作者信息,可以结合 --author 标志与 git commit --amend 使用:

git commit --amend --author="New Author <new.author@example.com&lgt;"

何时使用 git commit --amend

git commit --amend 命令非常适合以下情况:

  • 修正不清楚或包含错误的 commit 消息。

  • 将遗漏的更改添加到最后一个 commit 中,以保持相关更改在一个 commit 中。

  • 在推送到远程仓库前,从 commit 中移除意外包含的文件。

  • 当 commit 使用了错误的作者信息时更改作者信息。

何时不使用 git commit --amend

如果以下情况,请避免使用 git commit --amend

  • 该 commit 已推送到共享仓库,且其他协作者正在其上工作。

  • 更改不是细微的,commit 历史应反映开发过程的每个步骤。

理解何时以及如何有效使用 git commit --amend 可以显著提升你的版本控制实践。