# 更改提交消息

在本地修改含义不清、不正确或敏感的提交消息，并将更新后的提交推送到 GitHub，其中包括编辑最近提交或较早提交的步骤。

## 重写最近的提交消息

更改提交消息会创建新的提交 ID。 如果已推送提交，则必须强制推送重写历史记录。

## 提交尚未推送上线

如果提交仅存在于本地存储库中，请在本地修改提交消息。

1. 在命令行上，导航到包含要修改的提交的仓库。

2. 键入 `git commit --amend` 并按 **Enter**。

3. 在文本编辑器中编辑提交消息，然后保存该提交。
   * 若要添加共同作者，请将预告片添加到提交。 请参阅“[创建包含多个作者的提交或代表某个组织创建提交](/zh/enterprise-server@3.22/pull-requests/how-tos/commit-changes/creating-a-commit-with-multiple-authors)”。

4. 将该提交推送到 你的 GitHub Enterprise Server 实例。

## 修改旧提交或多个提交的消息

如果已推送提交，在重写历史记录之前请谨慎使用。 强制推送可能会干扰那些基于旧提交开展工作的协作者。

### 更改最近一次推送的提交消息

1. 按照[提交尚未推送到远程](#commit-has-not-been-pushed-online)中的步骤修改提交信息。
2. 强制推送覆盖旧提交。

   ```shell
   git push --force-with-lease origin EXAMPLE-BRANCH
   ```

### 更改较早的或多个提交消息

使用交互式变基来更改较早的或多个提交消息。

1. 在命令行上，导航到包含要修改的提交的存储库。

2. 开始对最近的 `n` 次提交进行交互式变基。

   ```shell
   git rebase -i HEAD~n
   ```

3. 在提交列表中，在要更改的每条提交消息前，将 `pick` 替换为 `reword`。

   ```shell
   pick e499d89 Delete CNAME
   reword 0c39034 Better README
   reword f7fde4a Change the commit message
   ```

4. 保存并关闭提交列表文件。

5. 在打开的每个提交消息文件中，输入新消息，然后保存并关闭该文件。

6. 强制推送已重写的历史记录。

   ```shell
   git push --force-with-lease origin EXAMPLE-BRANCH
   ```

请参阅 Git 手册中的 [交互模式](https://git-scm.com/docs/git-rebase#_interactive_mode) 。

> \[!WARNING]
> 如果提交消息包含敏感信息，强制推送修改后的提交可能无法从 GitHub 中删除原始提交记录。 请联系  并提供旧的提交 ID，以便将其从远程存储库中清除。

## 延伸阅读

* [对提交签名](/zh/enterprise-server@3.22/authentication/managing-commit-signature-verification/signing-commits)