重命名Really Deep远程Git提交消息

polhcujo  于 2023-03-28  发布在  Git
关注(0)|答案(2)|浏览(128)

重命名一条很深的远程git commit消息的最好方法是什么?我有一条超过70条消息深的commit消息,我需要重命名它,因为它有一些错误。
我研究过git rebase -i HEAD~,但这看起来很疯狂,因为提交实际上有多深。这是处理这个问题的正确方法吗?还是有更好的方法,我到目前为止还找不到?
先谢了!

xxhby3vn

xxhby3vn1#

你研究过的命令就是这样做的。修改一个提交消息70+次提交就是重写历史;这是一个强大的变化。
来自文档:
要修改一个历史上更早的提交,你必须使用更复杂的工具。Git没有修改历史工具,但是你可以使用rebase工具将一系列提交重定基到它们最初基于的HEAD上,而不是将它们移动到另一个HEAD上。使用交互式rebase工具,你可以在每次提交之后停止修改,并更改消息,添加文件,或者做任何你想做的事
对于您的情况,这意味着以下内容的一些变化:

$ git rebase -i HEAD~80 // some range including your target commit

这将打开一个Git Rebase TODO。在那里,在目标提交上将pick更改为reword。写入并退出缓冲区,然后编辑器将打开,其中包含您想要更改的消息。重写它并保存缓冲区。
如今,力推分支,历史又被改写.

$ git push -f

Git Tools - Rewriting History

w51jfk4q

w51jfk4q2#

有一种方法可以放置一个具有相同更改的提交,但是在提交后面的任何地方都要重命名消息(原始的是keps,但是在后面插入相同的消息)
该战略如下:
1.复制yourWorkingBranchName

  1. git checkout commitIdFromTheOneBehindTheBadOne
  2. git checkout -B tempBranchToRenameCommit
  3. reset --soft HEAD~1
  4. git add -A
  5. git commit -m“corrected message”
  6. git merge yourWorkingBranchName
    1.现在你在tempBranchToRenameCommit中有前面提到的逻辑,如果你想检查(如果你包括--name-status,也要验证相同的文件被触摸,否则省略):
  7. git log --oneline --name-status
    它最终会显示
commitIdFromTheOneAfterTheBadOne commitMessageFromTheOneAfterTheBadOne
<files changes 3>
commitIdFromTheBadOne commitMessageFromTheBadOne
<files changes 2>
commitIdFromTheOneYouJustRewrote commitMessageFromTheOneYouJustRewrote
<files changes 2>
commitIdFromTheOneBehindTheBadOne commitMessageFromTheOneBehindTheBadOne
<files changes 1>

相关问题