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


当前回答

根据文件。

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

其他回答

注意:如果您只想从git中删除文件,请使用以下命令:

git rm --cached file1.txt

如果您还想从硬盘中删除:

git rm file1.txt

如果要删除文件夹(该文件夹可能包含少量文件),则应使用递归命令删除,如下所示:

git rm -r foldername

如果要删除另一个文件夹中的文件夹

git rm -r parentFolder/childFolder

然后,你可以像往常一样提交和推送。但是,如果您想恢复已删除的文件夹,可以执行以下操作:从git恢复已删除文件是可能的。

来自文档:git rm[-f |--force][-n][-r][-cached][--ignore unmatch][-quiet][--]<file>…​选项<文件>…​要删除的文件。可以使用Fileglobs(例如*.c)删除所有匹配的文件。如果您希望Git扩展文件glob字符可能需要脱壳逃生。前导目录名(例如dir toremove dir/file1和dir/file2)可以用于删除目录和递归的所有子目录,但这需要要显式给定的-r选项。-f级--力覆盖最新检查。-n个--干运行实际上不要删除任何文件。相反,只需显示它们是否存在于索引中,否则将被命令删除。-r(r)当给定前导目录名时,允许递归删除。-- 此选项可用于将命令行选项与文件列表分开(当文件名可能被误认为命令行选项)。--高速缓存的使用此选项可以取消分级并仅从索引中删除路径。工作树文件,无论是否修改,都将被单独保留。--忽略取消匹配即使没有匹配的文件,也以零状态退出。-问--安静,安静gitrm通常为每个删除的文件输出一行(以rm命令的形式)。此选项将抑制该输出。

阅读更多官方文档。

我有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并执行了同步,将其应用到远程

转到项目目录并键入:

git filter-branch --tree-filter 'rm -f <deleted-file>' HEAD

在推送之后,强制从所有提交中删除文件。

git push origin --force --all

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

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

此外,如果是要删除的文件夹及其后续子文件夹或文件,请使用:

git rm -r foldername