[英]git rebase really old commit
我正在尝试撤消已经推送到远程的非常旧的提交。 我环顾四周,认为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
但仍然弹出合并冲突。
感谢@ElpieKay!
git filter-repo
成功地完成了它的工作。完整的细节请看这里。
我第一次尝试使用BFG
,但遇到了一些问题,所以我继续使用git filter-repo
。
git filter-repo
brew install git-filter-repo
git clone
)。git-filter-repo
警告在新克隆的 repo 中运行命令。.gitignore
。 如果您还没有,请确保将凭据保存在其他地方。git filter-repo --invert-paths --path PATH-TO-YOUR-FILE-WITH-SENSITIVE-DATA
echo "YOUR-FILE-WITH-SENSITIVE-DATA" >> .gitignore
git add .gitignore
git commit -m "deleted file <file-name> and added to .gitignore"
git remote add origin <your-repo-clone-url>
git push origin --force --all
git checkout <the-branch-cut-from-the-old-main>
git rebase origin main
这应该可以解决问题! 祝你好运!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.