jon*_*nny 66 git git-amend git-commit
在我的本地仓库中,我有一个提交错误的提交消息.
我已经发布了错误的提交消息git push
.
现在远程仓库(GitHub托管)也有不正确的提交消息.
我已经尝试了git commit --amend
,但发现在这种情况下它对我不起作用,因为我已经做了额外的提交,因为不正确的提交.
你会如何解决这种情况?
Dan*_*ing 95
最简单的解决方案(但请在完成此操作之前阅读完整的答案):
git rebase -i <hash-of-commit-preceding-the-incorrect-one>
pick
到reword
就行了不正确的提交.git push --force
更新GitHub.这意味着您将发布以前发布的存储库的修改版本.如果有人在您使用不正确的提交消息犯错误之间从您的仓库中提取或取出,并且当您修复它时,他们将在以后遇到一些困难.所以在尝试之前一定要接受这个后果.
Abi*_*ern 34
而不是为一个提交转到整个rebase路由:
git reset --soft head~
git commit -m "The message you wanted to use"
git push -f
Run Code Online (Sandbox Code Playgroud)
您可以在git-reset手册页中看到这些选项.
对于只有您正在处理的项目,更改的历史记录应该不是问题.
小智 6
如果您必须在多个分支上更改旧的提交消息(即,多个分支中存在错误消息的提交),您可能希望使用
git filter-branch -f --msg-filter 'sed "s/<old message>/<new message>/g"' -- --all
Run Code Online (Sandbox Code Playgroud)
替换提交消息.
Git将创建一个临时目录进行重写,并在refs/original /中另外备份旧引用.
-f
将强制执行该操作.如果临时目录已存在或者已存在refs/original下存储的引用,则这是必需的.如果不是这种情况,您可以删除此标志.
--
将过滤器分支选项与修订选项分开
--all
将确保所有分支和标签都被重写.
由于旧引用的备份,您可以在执行命令之前轻松返回状态.
说,您想要恢复您的主人并在分支old_master中访问它:
git checkout -b old_master refs/original/refs/heads/master
Run Code Online (Sandbox Code Playgroud)
对您的更改感到满意后,使用git push -f将更改推送到您的公共存储库.
请注意,您应该通知您的协作者,因为已经更改了从第一个修改过的提交开始的所有哈希值.
归档时间: |
|
查看次数: |
35905 次 |
最近记录: |