有没有办法在 GitHub 上编辑提交信息?
有没有办法在提交并推送到 GitHub 后编辑提交信息?我看到有 “添加注释 "和内联注释,但没有实际编辑提交信息的功能。git扩展中也有 "修改提交",但不能编辑现有的提交信息。
有没有办法在提交并推送到 GitHub 后编辑提交信息?我看到有 “添加注释 "和内联注释,但没有实际编辑提交信息的功能。git扩展中也有 "修改提交",但不能编辑现有的提交信息。
如果你的git图看起来像……。
O target-commit that you want to change its message [df9c192]
|
O parent-commit [b7ec061]
|
O
(df9c192
和b7ec061
分别是target-commit和parent-commit的提交哈希值)
你可以直接输入以下指令…
git reset --soft b7ec061
git commit -m "your_new_description"
git push -f
1。
git reset --soft b7ec061
将保留你的文件更改并重置为父级提交(即b7ec061) git commit -m "..."
将在本地创建一个新的提交 git push -f
将把你的新提交推送到服务器并替换旧提交 (例如 df9c192)另一种方法是创建一个额外的 “勘误提交"(并推送),引用包含错误的提交对象–新的勘误提交也提供了修正。勘误提交是指没有实质性代码改动但有重要提交信息的提交 – 例如,在 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
```。
由 @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^
。然后你可以做noop
或git rebase -i 881129d771219cfa29e6f6c2205851a2994a88
(如果是最新的)
^
“`
noop… ”`
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&。
更多信息请阅读文档。