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


当前回答

在我的案例中,我尝试在几次提交后删除github上的文件,但保存在计算机上

git filter-branch -f --index-filter 'git rm --cached --ignore-unmatch file_name_with_path' HEAD
git push --force -u origin master

后来这个文件被忽略了

其他回答

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

git remove -f *.pyc

使用git rm。

如果要从Git存储库和文件系统中删除文件,请使用:

git rm file1.txt
git commit -m "remove file1.txt"

但如果您只想从Git存储库中删除文件,而不想从文件系统中删除,请使用:

git rm --cached file1.txt
git commit -m "remove file1.txt"

并将更改推送到远程回购

git push origin branch_name

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

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

使用Git

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

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

git filter-repo --path file.ext

若你们并没有在本地回购中归档,而是在git回购中归档的话,那个么只需通过web界面在git repo中打开文件,然后在界面的右角找到“删除”按钮。单击此处,查看界面删除选项

对于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原点主控。由于历史已更改,需要强制。

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