有没有办法在 GitHub 上编辑提交消息?

有没有办法在 GitHub 上编辑提交消息?

提交并推送到 GitHub 后,有没有办法编辑提交消息?我看到有“添加注释”和内联评论,但没有实际编辑提交消息。git 扩展中也有“修改提交”,但这不会编辑现有消息。

答案1

  1. git rebase -i <commit hash you want to change>^

    这将打开你的默认编辑器(通常),其中包含提交列表以及每个提交的操作。默认情况下,操作为pick

  2. 对于您想要更改消息的任何提交,请更改pickreword

  3. 保存并退出(在 vi 中:wq:)。

  4. 对于每个这样的提交,您将获得一个编辑器来编辑提交消息。根据需要进行更改,保存并退出。

    一旦完成编辑所有提交消息,您将返回到命令提示符,并拥有一个包含更新消息的新树。

  5. 您现在可以使用将它们上传到 github git push origin --force

如果您只需要修复最后一次提交,则可以将步骤 1-4 替换为git commit --amend

答案2

在 Intellij Idea 中您可以轻松完成此操作。

  1. 开放版本控制(历史)
  2. 选择日志选项卡
  3. 选择提交以更改评论
  4. 按 F2(Mac fn + F2),然后更新您的提交消息

答案3

前提:

如果你的 git-graph 看起来像......

O   target-commit that you want to change its message [df9c192]
|
O   parent-commit [b7ec061]
|
O

df9c192b7ec061分别是目标提交和父提交的提交哈希值)

解决方案:

您只需输入以下说明...

git reset --soft b7ec061
git commit -m "your_new_description"
git push -f

解释:

  1. git reset --soft b7ec061将保留您对文件的更改并重置为父提交(即 b7ec061)
  2. git commit -m "..."将在本地创建新的提交
  3. git push -f将会把你的新提交推送到服务器并替换旧提交(即 df9c192)

答案4

@Mureinik 的回答很好,但新手无法理解。

第一种方法:

  1. 如果你只想编辑最新的提交消息,那么你只需要git commit --amend,你会看到:
<your existing commit mesage foo bar> 

# Please enter the commit message fir your changes. Lines starting
# with # will be ignored, and an empty message aborts the commit.
#
# Date: Sat Aug 24 17:56:16 2019 +0800
#
# On branch is up to date with 'origin/master'.
#
# changes to be committed:
#       modified:   foo.py
#
  1. 如你所见,在顶部提交消息,没有任何命令前缀,例如pick,这已经是編輯頁面你可以直接编辑顶部消息保存并退出,例如:
<your new correction commit message> 

# Please enter the commit message for your changes. Lines starting
....
  1. 然后执行 git push -u origin master --force<how you push normally> --force。这里的关键是--force

第二种方法:

  1. 你可以通过存储库 URL 查看提交哈希git log,或者从中提取,我的例子是881129d771219cfa29e6f6c2205851a2994a8835

  2. 然后你可以做git rebase --interactive 881129d771219cfa29e6f6c2205851a2994a8835git rebase -i HEAD^(如果是最新的)

  3. 你会看到:

pick <commit hash> <your current commit message>

# Rebase 8db7e8b..fa20af3 onto 8db7e8b
#
# Commands:
#  p, pick = use commit
#  r, reword = use commit, but edit the commit message
#  e, edit = use commit, but stop for amending
#  s, squash = use commit, but meld into previous commit
#  f, fixup = like "squash", but discard this commit's log message
#  x, exec = run command (the rest of the line) using shell
#  d, drop = remove commit
#
# These lines can be re-ordered; they are executed from top to bottom.
#
# If you remove a line here THAT COMMIT WILL BE LOST.
#
# However, if you remove everything, the rebase will be aborted.
#
# Note that empty commits are commented out
  1. 但是如果你看到了noop,那么你可能输入错了,例如如果你在最后输入了git rebase -i 881129d771219cfa29e6f6c2205851a2994a88which missing ^,你最好退出编辑器而不保存并找出原因:
noop

# Rebase 8db7e8b..fa20af3 onto 8db7e8b
...
  1. 如果没有问题,则只需将noop单词改为,其他的都保留(此时不要编辑提交消息),例如:pickreword
reword <commit hash> <your current commit message>

# Rebase 8db7e8b..fa20af3 onto 8db7e8b
#
# Commands:
#  p, pick = use commit
...
  1. 保存并退出将看到編輯頁面与方法#1类似:
<your existing commit mesage foo bar> 

# Please enter the commit message fir your changes. Lines starting
# with # will be ignored, and an empty message aborts the commit.
#
# Date: Sat Aug 24 17:56:16 2019 +0800
#
# interactive rebase in progress; onto b057371
# Last command done (1 command done):
#    reword d996ffb <existing commit message foo bar>
# No commands remaining.
# You are currently editing a commit while rebasing branch 'master' on 'b057371'.
#
# changes to be committed:
#       modified:   foo.py
#
  1. 编辑顶部的消息,与方法#1相同,然后保存并退出,例如:
<your new correction commit message> 

# Please enter the commit message for your changes. Lines starting
....
  1. 再次,与方法 1 相同,执行 git push -u origin master --force<how you push normally> --force。这里的关键是--force

欲了解更多信息,请阅读文档

相关内容