首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我如何从git repo中完全创建一个文件?

我如何从git repo中完全创建一个文件?
EN

Stack Overflow用户
提问于 2012-05-14 22:41:19
回答 2查看 2.1K关注 0票数 5

我意外地将一个我无权访问的文件推送到了一个可公开访问的repo中。

我该怎么做才能有选择地从存储库中删除这个文件,这样它的数据就完全消失了?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-05-14 22:46:29

在这种情况下,分支是你的朋友,可爱的Github的well documented

票数 6
EN

Stack Overflow用户

发布于 2012-05-14 22:43:46

假设您添加文件的提交是最新的提交:

代码语言:javascript
复制
git reset --hard HEAD^
git push --force

如果您在存储库中有更多的提交,您可以使用交互式的rebase来删除该提交。使用git rebase -i xxx,并将xxx作为提交,放在您想要核化的提交之前。然后在编辑器中,删除包含“坏”提交的行。一旦您保存并退出编辑器,该提交将永远消失。如果无法删除整个提交,可以在文件中将pick替换为edit,并修改提交(例如,从转移区域中删除文件),然后运行git rebase --continue

但是,从您的存储库中提取的每个人都需要手动执行相同的rebase 。但是那个文件已经公开了,你不应该重写历史来撤销你的错误。

您还可以使用described in the GitHub help来删除文件,而不是所有的基址调整

代码语言:javascript
复制
git filter-branch --index-filter 'git rm --cached --ignore-unmatch NAME_OF_THE_FILE' --prune-empty -- --all

当然,您也需要在此操作之后执行git push --force,因为它还会重写历史(如果有人从该存储库中取出并开始操作,则会有所有警告)。如果你的repo在github上,也不要忘记联系他们来清除你的存储库的缓存。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10585549

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档