从远程 git 历史记录中删除我在本地没有的提交
Posted
技术标签:
【中文标题】从远程 git 历史记录中删除我在本地没有的提交【英文标题】:Remove a commit from remote git history which I don't have locally 【发布时间】:2012-04-04 17:09:15 【问题描述】:一个团队成员不小心将超过 1GB 的文件提交到我们的 master 分支并将其推送到 origin。从那以后,我将其从源代码控制中删除并致力于掌握。但是,所有其他正在更新其代码(通过git pull
)的协作者实际上都在下载这些文件作为历史记录的一部分。
我想完全从历史中删除该提交。我想如果我可以访问团队成员的计算机,这会更容易做到,但我现在没有。那么有没有办法做到这一点而不必从远程拉下最新的?
【问题讨论】:
【参考方案1】:我假设你有一个 repo 的副本,但只是你没有最新的大提交。您可以使用 git push -f
将您的副本推送到 repo 以完全覆盖其他 repo 提交并从那里继续。
【讨论】:
酷。是的,我没有那个承诺,所以我想尽可能地避免它。问题是她后来提交了更多代码,所以做一个push -f
会把它吹走吗?
@john - 当然。现在,她的工作是确保一旦 repo 处于适当的状态,它就会被推送。代码将从服务器上被删除,但当然会保留在她的本地仓库中,她必须能够重新设置/拉取和推送。
我以某种方式设法进行了部分拉取(git pull origin master
后跟 CTRL+C
)。它没有下载文件,但更新了我的历史记录。所以我能够做一个rebase
来得到提交和push -f
到master。以上是关于从远程 git 历史记录中删除我在本地没有的提交的主要内容,如果未能解决你的问题,请参考以下文章
git删除已经提交的包含敏感信息的文件(还没提交到远程仓库)