在GitHub中编辑git commit消息


173

提交GitHub.com后,是否可以在线编辑中的提交消息?

在命令行中,一个可以做

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

正如在另一个问题中正确提出的那样。

先尝试git pull然后再git push工作(在此期间没有任何其他提交干扰)。

但是可以通过GitHub网站完成吗?


请查看@ DanGreen-Leipciger的答案,即使它不是被接受的答案
RBT

Answers:


101

不,这不是直接可能的。每个Git提交的哈希也基于提交消息进行计算。更改提交消息时,将更改提交哈希。如果要推送该提交,则必须强制执行该推送(git push -f)。但是,如果已经有人撤消了您的旧提交并基于该提交开始了工作,那么他将不得不将其工作重新建立到您的新提交上。


我也可以先执行git pull然后执行git push,这样就可以了。但是显然没有在线方式。
PNS 2012年

截至2016
bigT

而且我猜想它不会具有较高的优先级,因为您将更改已经发布的分支的提交历史记录,您永远都不要这样做(除非您有200%的把握,否则没人会在他的本地计算机上拥有这个分支)。
dunni

这只是半正确的。的确如此,但前提是假设。如果将其与@DanGreen(以下)结合使用,答案会更好。这不是“直接可能的”,并且肯定会带有预警(即:“您不应'永远'不要这样做……[除非您确定要这么做]”)---只是说这不是在技​​术上可行的情况下,可能的答案是不完整的。
班恩(Bane)'18年

1
OP询问是否可以在Github网站上在线进行操作。AFAIK这仍然是不可能的。因此,我的回答是正确的,Dan Green的回答仅处理本地处理方式,而不是在Githubs网站上处理。
dunni

145

GitHub的说明:

  1. 在命令行上,导航到包含要修改的提交的存储库。
  2. 键入git commit --amend,然后按Enter。
  3. 在您的文本编辑器中,编辑提交消息并保存提交。
  4. 使用git push --force example-branch命令强制推送旧提交。

资源: https //help.github.com/articles/changing-a-commit-message/


11
小心!使用<git commit --amend>&<Enter>和<git commit --amend -m“ new commit message”>的区别在于,在第一种情况下,您正在文本编辑器中编辑提交消息,在第二个中,您将其替换为“新提交消息”。如果您强行按下此按钮,它将替换您遥控器上的提交。这不能解决以下问题:如果团队中的其他人撤消了先前的提交,则您现在在不同的计算机上具有不同的历史记录(包括不同的提交)。如果您知道没有人取消您的提交,那么这是安全的。阅读源Dan发布的信息
TM

7
git commit --amend一直存在。另外,您会在git(这是一个开放源代码命令行工具)和Github(这是一家提供在线源代码托管的公司)之间感到困惑。
–vinyl

1
OP询问了有关GitHub的信息,特别是有关将提交推送到其服务器之后的信息。这些是GitHub关于执行OP要求的说明。
丹·格林·莱珀西格

3
@ DanGreen-Leipciger-是的,但这不是在网站本身上完成,而是通过命令行完成。我认为PNS希望从Web界面中做到这一点。
PhistucK '17

2
OP询问了如何专门针对GitHub,这就是专门针对GitHub的方式。
丹·格林·莱珀西格

30

您需要git push -f假设之前没有人拉过其他提交。当心,您正在改变历史。


3

否,因为提交消息与提交SHA /哈希相关,并且如果我们对其进行更改,则提交SHA也将更改。我使用的方法是对该提交创建评论。我不能反过头来。


2

对于intellij用户: 如果要以交互方式对过去的提交进行更改,而这些提交不会被推送,请按照Intellij中的以下步骤操作

  • 选择版本控制
  • 选择日志
  • 右键单击要修改其注释的提交
  • 点击改写
  • 完成了

希望能帮助到你


0

我面临着同样的问题。

在github中查看特定分支,您将知道该分支中第一次提交的提交ID。为此做一个基础:

git rebase -i

编辑器将打开。在github UI和打开的编辑器中跟踪您的提交,并更改消息。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.