我试图撤销一个已经推送到远程的非常旧的提交记录。
我搜索了一下,认为git rebase
可能是最好的解决方案。
于是我运行了以下代码:
git rebase -i <commit-id>
然后进行编辑:
pick <commit-id> <commit-title>
drop <commit-id> <commit-title> <- the commit I want to delete
pick <commit-id> <commit-title>
尝试使用
:wq
,但是这导致了很多合并冲突(提交已经半年了)。我想撤销这个提交的原因是我不小心添加了一个包含凭据的文件,不应该与其他协作者共享。
所以我想撤销的唯一事情就是在远程上“创建”文件。
git rebase
是最好的方法吗?如果是的话,有没有办法不触发所有的合并冲突(像以前一样合并它们)?
我宁愿不要错误地合并冲突。
此外,我尝试删除的提交不应该引起将来的冲突。我试过运行不删除提交的
git rebase
,但仍然出现合并冲突。
git filter-branch
或其他第三方工具来从整个历史记录中删除文件。这里有一个链接可以帮助你:https://docs.github.com/cn/authentication/keeping-your-account-and-data-secure/removing-sensitive-data-from-a-repository 。 - ElpieKay--rebase-merges
的选项(以及其他合并选项)。但我自己从未使用过它。不确定它的效果如何。你尝试在你的变基命令中添加这个选项了吗?编辑:算了吧。它说“任何已解决的合并冲突或手动修改都必须手动解决/重新应用。” :( 我想你每次可以使用git checkout REBASE_HEAD -- <conflict files>
来解决,但那仍然很麻烦。 - Jay