我已经提交了git并随后推送。我想更改提交消息。如果我理解正确,这是不可取的,因为在我进行此类更改之前,可能有人从远程存储库中删除了内容。如果我知道没人拉过呢?

有办法做到这一点吗?


当前回答

git commit --amend

使用编辑提交消息打字键盘

git push --force

其他回答

如果您使用的是位桶管道,则有关相同问题的附加信息

编辑您的邮件

git commit --amend

推到服务器

git push --force <repository> <branch>

然后在管道上的push命令中添加--force

git ftp push --force

这将删除您以前的提交并推送当前提交。

在第一次推动后移除--力

我在bitbucket管道上试过了,效果很好

确保在正确的分支上进行更改

git checkout 

#确保您在正确的分支上进行更改只是为了确定:

git checkout branchname

Then

git commit --amend -m "new message"

然后按下

git push --force

如果您想修改一个较旧的提交,而不是最后一个提交,则需要使用rebase命令,如Github帮助页面“修改较旧或多个提交消息的消息”部分中所述

另一个选项是创建一个额外的“勘误表提交”(和推送),它引用包含错误的提交对象——新的勘误表提交也提供了更正。勘误表提交是一种没有实质性代码更改的提交,但有一条重要的提交消息——例如,在自述文件中添加一个空格字符,并使用重要的提交信息提交更改,或者使用git选项——allow empty。它肯定比重定基更容易、更安全,它不会修改真实的历史记录,并且保持了分支树的干净(如果您正在更正最近的提交,那么使用modify也是一个不错的选择,但对于较旧的提交,错误提交可能是一个不错选择)。这种情况很少发生,因此简单地记录错误就足够了。将来,如果您需要在git日志中搜索功能关键字,原始(错误)提交可能不会出现,因为在原始提交中使用了错误的关键字(原始拼写错误)——但是,该关键字将出现在勘误表提交中,然后将您指向具有拼写错误的原始提交。下面是一个示例:

$ git log
commit 0c28141c68adae276840f17ccd4766542c33cf1d
Author: First Last 
Date:   Wed Aug 8 15:55:52 2018 -0600

    Errata commit:
    This commit has no substantive code change.
    This commit is provided only to document a correction to a previous commit message.
    This pertains to commit object e083a7abd8deb5776cb304fa13731a4182a24be1
    Original incorrect commit message:
        Changed background color to red
    Correction (*change highlighted*):
        Changed background color to *blue*

commit 032d0ff0601bff79bdef3c6f0a02ebfa061c4ad4
Author: First Last 
Date:   Wed Aug 8 15:43:16 2018 -0600

    Some interim commit message

commit e083a7abd8deb5776cb304fa13731a4182a24be1
Author: First Last 
Date:   Wed Aug 8 13:31:32 2018 -0600

    Changed background color to red
git commit --amend

然后在当前窗口中编辑和更改消息。在那之后

git push --force-with-lease