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


当前回答

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

完成!

其他回答

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

git remove -f *.pyc

根据文件。

git rm—缓存文件1.xt

当涉及到敏感数据时,最好不要说您删除了该文件,而是将其包含在最后一次已知提交中:

0.修改上次提交

git commit --amend -CHEAD

如果要从所有git历史记录中删除该文件,根据文档,应执行以下操作:

1.将其从本地历史记录中删除

git filter-branch --force --index-filter \ "git rm --cached --ignore-unmatch PATH-TO-YOUR-FILE-WITH-SENSITIVE-DATA" \  --prune-empty --tag-name-filter cat -- --all
# Replace PATH-TO-YOUR-FILE-WITH-SENSITIVE-DATA with the path to the file you want to remove, not just its filename

不要忘记将此文件包含在.gitignore中(如果它是一个您永远不想共享的文件(例如密码…):

echo "YOUR-FILE-WITH-SENSITIVE-DATA" >> .gitignore
git add .gitignore
git commit -m "Add YOUR-FILE-WITH-SENSITIVE-DATA to .gitignore"

3.如果需要从遥控器中移除

git push origin --force --all

4.如果您还需要将其从标签发布中删除:

git push origin --force --tags

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

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

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

使用Git

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

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

git filter-repo --path file.ext

我有obj和bin文件,它们意外地进入了repo,我不想污染我的“已更改文件”列表

当我注意到他们去了遥控器后,我将其添加到.gitignore中,忽略了他们

/*/obj
/*/bin

问题是它们已经在远程,当它们被更改时,它们会弹出为已更改,并污染已更改的文件列表。

要停止查看它们,您需要从远程存储库中删除整个文件夹。

在命令提示中:

CD到repo文件夹(即C:\repo\MyRepo)我要删除SSIS\obj。似乎只能在顶层删除,因此现在需要将CD插入SSIS:(即C:\repo\MyRepo\SSSIS)现在输入魔法咒语git rm-r-f objrm=删除-r=递归删除-f=表示力,因为你真的是这么想的obj是文件夹现在运行gitcommit-m“删除obj文件夹”

我收到一条警告消息,说13个文件更改了315222个删除

然后,因为我不想查找CMD行,我进入Visual Sstudio并执行了同步,将其应用到远程