git - 如何修改现有的、未推送的提交消息?

标签 git git-commit git-rewrite-history git-amend

<分区>

我在提交信息中写错了。

如何更改消息?尚未推送提交。

最佳答案

修改最近的提交信息

git commit --amend

将打开您的编辑器,允许您更改最近提交的提交消息。此外,您可以直接在命令行中设置提交消息:

git commit --amend -m "New commit message"

…然而,这会使多行提交消息或小的更正更难以输入。

确保在执行此操作之前您没有任何工作副本更改暂存,否则它们也会被提交。 (未暂存 更改将不会提交。)

更改已推送到远程分支的提交消息

如果您已经将您的提交推送到您的远程分支,那么 - 在本地修改您的提交(如上所述)之后 - 您还将 need to force push the commit与:

git push <remote> <branch> --force
# Or
git push <remote> <branch> -f

警告:强制推送将用本地分支的状态覆盖远程分支。如果远程分支上有您在本地分支中没有的提交,您丢失这些提交。

警告:修改您已经与其他人共享的提交时要谨慎。修改提交本质上是重写它们以具有不同的 SHA ID,如果其他人有您重写的旧提交的副本,这会带来问题。任何拥有旧提交副本的人都需要将他们的工作与您新重写的提交同步,这有时会很困难,因此在尝试重写共享提交历史时确保与其他人协调,或者避免重写共享提交完全。


执行交互式 rebase

另一种选择是使用交互式 rebase 。 这使您可以编辑任何要更新的消息,即使它不是最新的消息。

为了执行 Git squash,请按照以下步骤操作:

// n is the number of commits up to the last commit you want to be able to edit
git rebase -i HEAD~n

压缩提交后 - 选择 e/r 来编辑消息:

Screenshot of terminal while editing commit

关于交互式 rebase 的重要说明

当你使用 git rebase -i HEAD~n 时,可以有 更多 的提交。 Git 将“收集”最后 n 个提交中的所有提交,如果在该范围之间的某处存在 merge ,您也会看到所有提交,因此结果将为 n + 。

好提示:

如果您必须为多个分支执行此操作并且在修改内容时可能会遇到冲突,请设置 git rerere让 Git 自动为您解决这些冲突。


文档

关于git - 如何修改现有的、未推送的提交消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/179123/

相关文章:

git - 如何恢复 git 历史记录重写?

git - 按日期 Git 获取 2 次提交之间的代码行差异

git - 如何根据日期创建GIT分支?

linux - 如何让 git 在 pull 时不要求输入密码?

git - 首次提交到 git 存储库时遇到问题

git - 如何在git中将文件 "Un-push"?

git - 使用 BFG repo-cleaner 后检查 git repo

混帐/gitorious : Way to share certain branches/repositories with the customer

错误 :- expected committer email '' but found 'karan@xyz.com'

github - 当 fork repo 的起源历史被重写时会发生什么?