如何从存储库中删除“file1.txt”?


当前回答

如果您的文件是敏感的(例如,您意外添加并提交的设置或密钥),那么您可以从所有版本中删除它。

要从所有版本中删除,请使用以下命令(警告:小心,因为如果没有副本,您将无法还原回购中删除的文件):

使用Git

git filter-branch --index-filter 'git rm -rf --cached --ignore-unmatch file.ext' HEAD

使用gitfilter repo(在这里获取,git推荐的新方法)

git filter-repo --path file.ext

其他回答

如果您有GitHub for Windows应用程序,您可以通过5个简单步骤删除文件:

单击同步。单击文件所在的目录,然后选择文件的最新版本。单击工具并选择“在此处打开外壳”在shell中,键入:“rm{filename}”并按enter键。提交更改并重新同步。

如果需要从已确定的扩展名中删除文件(例如,已编译的文件),可以执行以下操作一次性删除所有文件:

git remove -f *.pyc

对于git rm不够,需要从历史中删除文件的情况:正如git filter分支手册页面现在本身建议使用git filter repo,而我今天不得不这样做,这里有一个使用该工具的示例。它使用示例回购https://example/eguser/eg.git

将存储库克隆到新目录gitclone中https://example/eguser/eg.git除了不需要的文件,保留所有内容。git filter repo--path file1.xt--反转路径将远程存储库原点添加回:git远程添加原点https://example/eguser/eg.git.gitfilter repo工具通过设计删除远程远程信息,并建议一个新的远程repo(参见第4点)。这对于大型共享回购来说是有意义的,但对于删除一个新添加的文件来说,可能是过度的,如本例所示。当对本地内容满意时,用它替换远程。git push——强制-u原点主控。由于历史已更改,需要强制。

还请注意,在加载和更改存储库历史记录之前,有关团队和项目动态的链接手册中有一个有用的“干运行”选项和一个很好的讨论。

只需打开github存储库中的文件,就可以看到Raw|Blame旁边的删除图标,不要忘记单击提交更改按钮。您可以看到您的文件已被删除。

我尝试了许多建议的选项,但似乎都不起作用(我不会列出各种问题)。我最终所做的(对我来说)简单而直观的工作是:

将整个本地回购转移到其他地方再次将回购从主机克隆到本地驱动器将文件/文件夹从#1中的原始副本复制回#2中的新克隆确保问题大文件不存在或排除在.gitignore文件中执行通常的gitadd/gitcommit/gitpush