重命名一条很深的远程git commit消息的最好方法是什么?我有一条超过70条消息深的commit消息,我需要重命名它,因为它有一些错误。我研究过git rebase -i HEAD~,但这看起来很疯狂,因为提交实际上有多深。这是处理这个问题的正确方法吗?还是有更好的方法,我到目前为止还找不到?先谢了!
git rebase -i HEAD~
xxhby3vn1#
你研究过的命令就是这样做的。修改一个提交消息70+次提交就是重写历史;这是一个强大的变化。来自文档:要修改一个历史上更早的提交,你必须使用更复杂的工具。Git没有修改历史工具,但是你可以使用rebase工具将一系列提交重定基到它们最初基于的HEAD上,而不是将它们移动到另一个HEAD上。使用交互式rebase工具,你可以在每次提交之后停止修改,并更改消息,添加文件,或者做任何你想做的事对于您的情况,这意味着以下内容的一些变化:
$ git rebase -i HEAD~80 // some range including your target commit
这将打开一个Git Rebase TODO。在那里,在目标提交上将pick更改为reword。写入并退出缓冲区,然后编辑器将打开,其中包含您想要更改的消息。重写它并保存缓冲区。如今,力推分支,历史又被改写.
pick
reword
$ git push -f
Git Tools - Rewriting History
w51jfk4q2#
有一种方法可以放置一个具有相同更改的提交,但是在提交后面的任何地方都要重命名消息(原始的是keps,但是在后面插入相同的消息)该战略如下:1.复制yourWorkingBranchName
yourWorkingBranchName
commitIdFromTheOneAfterTheBadOne commitMessageFromTheOneAfterTheBadOne <files changes 3> commitIdFromTheBadOne commitMessageFromTheBadOne <files changes 2> commitIdFromTheOneYouJustRewrote commitMessageFromTheOneYouJustRewrote <files changes 2> commitIdFromTheOneBehindTheBadOne commitMessageFromTheOneBehindTheBadOne <files changes 1>
2条答案
按热度按时间xxhby3vn1#
你研究过的命令就是这样做的。修改一个提交消息70+次提交就是重写历史;这是一个强大的变化。
来自文档:
要修改一个历史上更早的提交,你必须使用更复杂的工具。Git没有修改历史工具,但是你可以使用rebase工具将一系列提交重定基到它们最初基于的HEAD上,而不是将它们移动到另一个HEAD上。使用交互式rebase工具,你可以在每次提交之后停止修改,并更改消息,添加文件,或者做任何你想做的事
对于您的情况,这意味着以下内容的一些变化:
这将打开一个Git Rebase TODO。在那里,在目标提交上将
pick
更改为reword
。写入并退出缓冲区,然后编辑器将打开,其中包含您想要更改的消息。重写它并保存缓冲区。如今,力推分支,历史又被改写.
Git Tools - Rewriting History
w51jfk4q2#
有一种方法可以放置一个具有相同更改的提交,但是在提交后面的任何地方都要重命名消息(原始的是keps,但是在后面插入相同的消息)
该战略如下:
1.复制
yourWorkingBranchName
yourWorkingBranchName
1.现在你在tempBranchToRenameCommit中有前面提到的逻辑,如果你想检查(如果你包括--name-status,也要验证相同的文件被触摸,否则省略):
它最终会显示