2014-05-09 16:48:06 +0000 2014-05-09 16:48:06 +0000
135
135

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

有没有办法在提交并推送到 GitHub 后编辑提交信息?我看到有 “添加注释 "和内联注释,但没有实际编辑提交信息的功能。git扩展中也有 "修改提交",但不能编辑现有的提交信息。

答案 (5)

189
189
189
2014-05-10 10:27:44 +0000
  1. git rebase -i <commit hash you want to change>^

  2. 对于任何你想更改消息的提交,将pick改为reword

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

4.保存并退出(在vi中:git push origin --force)。对于每一个这样的提交,你会得到一个编辑器来编辑提交信息。根据你的需要进行修改,保存并退出。

  1. 现在你可以使用git commit --amend将它们上传到github。

如果你只需要修正你的最后一次提交,你可以用0x6&代替步骤1-4。

35
35
35
2018-06-18 09:49:45 +0000

在Intellij Idea中,你可以很容易地做到这一点。

1.打开版本控制(历史) 2. 选择日志标签 3. 选择提交,修改注释 4.按F2(Mac fn + F2),并更新你的提交信息。

3
3
3
2019-03-14 07:29:36 +0000

##前提:

如果你的git图看起来像……。

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

(df9c192b7ec061分别是target-commit和parent-commit的提交哈希值)

解决方案。

你可以直接输入以下指令…

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

解释:

1。

  1. git reset --soft b7ec061将保留你的文件更改并重置为父级提交(即b7ec061)
  2. git commit -m "..." 将在本地创建一个新的提交
  3. git push -f 将把你的新提交推送到服务器并替换旧提交 (例如 df9c192)
2
2
2
2018-08-08 22:27:59 +0000

另一种方法是创建一个额外的 “勘误提交"(并推送),引用包含错误的提交对象–新的勘误提交也提供了修正。勘误提交是指没有实质性代码改动但有重要提交信息的提交 – 例如,在 readme 文件中添加一个空格字符,然后将该改动与重要提交信息一起提交,或者使用 git 选项 --allow-empty。这当然比重命名更简单、更安全,而且不会修改真实的历史记录,还能保持分支树的干净(如果你要修改最近的提交,使用amend也是个不错的选择,但对于老的提交,使用勘误提交可能是个不错的选择)。这种事情很少发生,所以只要记录下错误就足够了。将来,如果你需要在 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
```。
0
0
0
2019-08-24 11:01:51 +0000

由 @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:

<your new correction commit message> 

# Please enter the commit message for your changes. Lines starting
....

1.如你所见,上面的提交信息没有任何命令前缀,如pick,这已经是编辑页面了,你可以直接编辑上面的信息保存&退出,例如:。

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.然后做git push -u origin master --force<how you push normally> --force。这里的关键是--force

第二种方法:

1.你可以通过git log看到提交的哈希值,或者从版本库的url中提取,我的例子是881129d771219cfa29e6f6c2205851a2994a8835

2.然后做git rebase --interactive 881129d771219cfa29e6f6c2205851a2994a8835或者git rebase -i HEAD^。然后你可以做noopgit rebase -i 881129d771219cfa29e6f6c2205851a2994a88(如果是最新的)

  1. 你会看到 如果你看到^ “` noop

Rebase 8db7e8b..fa20af3 onto 8db7e8b

… ”`

1.但是如果你看到noop,那么你可能是打错了,例如,如果你做了pick,最后少了reword,你最好退出编辑器,不要保存,并找出原因:

reword <commit hash> <your current commit message>

# Rebase 8db7e8b..fa20af3 onto 8db7e8b
#
# Commands:
# p, pick = use commit
...

1.如果没有git push -u origin master --force的问题,那么简单地将<how you push normally> --force改为--force,其他的只是保留(此时你不编辑提交信息),例如:

<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.如果没有0x6&的问题,那么简单地将0x6&改为0x6&,其他的只是保留(此时你不编辑提交信息)。 g:

<your new correction commit message> 

# Please enter the commit message for your changes. Lines starting
....

1.save&quit会看到**编辑页面,类似于方法#1:

0x1&

1.编辑上面的消息,和方法#1一样,然后save&quit,e.g:

0x1&

1.同样和方法#1一样,做0x6&或者0x6&。这里的关键是0x6&。

更多信息请阅读文档