我犯了一个愚蠢的错误,不小心将一个node_modules文件夹提交到我的本地git,然后将其推送到github。这是一个巨大的文件夹,任何下载我的存储库的其他人也会在旧提交中下载此文件夹。我一直在尝试删除提交rebase --onto
and rebase -i
没有运气。这就是我的git log
好像。
$ git log --oneline
44549c5f (HEAD -> alex/matUI, origin/alex/matUI) fighting with gitignore
a5a5a79c changed ui to material ##<---- remove me!
dbec4ab3 converting to material ui ##<---- remove me!
cd4352f6 (origin/master, origin/HEAD, master) Merge pull request #1 from notsmart/addFullstack
a058bf1e moved files to new repo
80c82607 Added README.md
您将如何删除这些提交?
你必须做两件事:
- 本地删除这些提交
- 用力推动它们覆盖原点上的分支
编辑:实际上备份那些将首先删除的文件,因为此方法会将它们从文件系统中删除。
First:
git rebase -i HEAD~4
现在您有一个打开的编辑器,其中的行与您编写的内容类似。删除包含您不需要的提交的行。保存并退出编辑器。
Check git log
如果它是正确的。
Then:
git 推 -f
解释:
首先,您启动了交互式历史记录编辑会话。您在编辑器中有以下可能的选项,已注释掉。您可以执行很多操作,例如通过删除行来删除提交、将它们压缩在一起、通过重新排序行来重新排序等。
然后删除提交行并保存。发生的事情是 git 尝试创建新的提交链来应用您所需的更改。实际上创建了新的提交(部分提交链接到前一个提交),因此已更改的提交有新的哈希值(因为从技术上讲它们是新的)。您将看到 origin/alex/matUI 不再在您的头上(在git log
).
最后你用力推了。这会用当前的 alex/matUI 覆盖 origin/alex/matUI。这实际上会覆盖您的 HEAD 指向的任何分支,并与 origin 上的分支绑定(您的 alex/matUI 与 origin/alex/matUI 绑定,这不是魔法,它是您手动创建或创建的显式绑定拉/克隆时)。通常情况下push
是保守的,只允许在分支提示之后添加。-f
力量通过那个。使用卢克的力量:)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)