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


当前回答

约翰·肖平编辑的格雷格·休吉尔(Greg Hewgill)的回答对我很有帮助,因为我并不在乎将文件从历史中完全删除。在我的情况下,它是一个目录,所以我做的唯一更改是使用:

git rm -r --cached myDirectoryName

而不是“git rm--cached file1.txt”..后接:

git commit -m "deleted myDirectoryName from git"
git push origin branch_name

谢谢Greg Hewgill和Johannchopin!

其他回答

2022年有效的新答案。

请勿使用:

git filter-branch

推送后,此命令可能不会更改远程回购。如果您在使用它之后进行克隆,您将看到没有任何变化,回购仍然具有较大的大小。此命令已过时。例如,如果使用中的步骤https://github.com/18F/C2/issues/439,这行不通。

你需要使用

git filter-repo

步骤:

(1) 在.git中查找最大的文件:

git rev-list --objects --all | grep -f <(git verify-pack -v  .git/objects/pack/*.idx| sort -k 3 -n | cut -f 1 -d " " | tail -10)

(2) Strat过滤这些大型文件:

 git filter-repo --path-glob '../../src/../..' --invert-paths --force

or

 git filter-repo --path-glob '*.zip' --invert-paths --force

or

 git filter-repo --path-glob '*.a' --invert-paths --force

或无论您在步骤1中找到什么。

(3)

 git remote add origin git@github.com:.../...git

(4)

git push --all --force

git push --tags --force

完成!

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

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

后来这个文件被忽略了

首先,如果您使用git rm,特别是对于多个文件,请考虑任何通配符都将由shell解析,而不是由git命令解析。

git rm -- *.anExtension
git commit -m "remove multiple files"

但是,如果你的文件已经在GitHub上,你可以(从2013年7月起)直接从web GUI中删除它!

只需查看存储库中的任何文件,单击顶部的垃圾桶图标,然后像其他基于web的编辑一样提交删除操作。

然后在本地回购上“git pull”,这也会在本地删除文件。这使得这个答案成为从git repo中删除文件的(迂回)方式?(更不用说GitHub上的文件位于“git repo”中)


(提交将反映该文件的删除):

就这样,它消失了。有关这些功能的帮助,请务必阅读有关创建、移动、重命名和删除文件的帮助文章。注意:由于它是一个版本控制系统,如果您以后需要恢复文件,Git始终支持您。

最后一句话意味着删除的文件仍然是历史的一部分,您可以很容易地恢复它(但还没有通过GitHub web界面):

请参阅“在Git repo中恢复已删除的文件”。

首先,从本地存储库中删除文件。git rm-r文件名或者,只从本地存储库中删除文件,而从文件系统中删除文件git rm—缓存的文件名其次,将更改提交到本地存储库。gitcommit-m“不需要的文件或一些内联注释”最后,将本地更改更新/推送到远程存储库。数字推送

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

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