如何从 Git 仓库中删除已提交的文件?


Git 允许您使用以下任何一种方法从仓库中删除文件:

  • 使用 Linux 的 rm 命令

  • 使用 git rm 命令

场景 1 - 使用 Linux rm 命令

Linux rm 命令的语法如下:

$ git rm <file_name>

假设仓库中存在一个名为“file1.python”的文件。使用 Linux rm 命令删除文件“file1.python”。

$ git rm file1.python

首先,让我们验证文件是否已从工作目录中删除。这可以通过使用 Linux ls 命令来验证。

$ ls

输出表明文件已从工作目录中删除。

dell@DESKTOP−N961NR5 MINGW64 /e/tut_repo (master)
$ Is

现在,让我们验证文件是否也已从暂存区中删除。

使用 git 命令 ls−files 来验证。

$ git ls−files

上述代码的输出为:

file1.python

从输出中可以清楚地看到,该文件尚未从暂存区中删除。这意味着使用 Linux 命令执行的添加、重命名或删除文件等更改不会自动暂存。此类更改应使用 git add 命令显式暂存,然后提交。

$ git add file1.python

执行 ls−files 命令。操作的状态也可以使用 git status 命令进行验证。

$ git ls−files
$ git status

上述命令的输出显示在屏幕截图中。

On branch master
Changes to be committed:
   (use “git restore --staged <file>...” to unstage)
      deleted:file1.python

该文件已从暂存区中删除。现在让我们最终提交更改。

$ git commit -m ‘removed unused python file’

该文件已永久从仓库中删除。请参阅下面的屏幕截图以查看输出。

[master 81e32c4] removed unused python file
1 file changed, 2 deletions (-)
delete mode 100644 file1.python

场景 2 - 使用 git rm 命令

git rm 命令的语法如下:

git rm <file_name>

假设仓库中存在一个名为“file1.js”的文件,让我们使用 git rm 命令删除该文件。

$ git rm file1.js

让我们使用 git ls−files 命令来验证文件是否已从暂存区中删除。

$ git ls−files

我们也可以使用 git status 命令来验证文件是否已从暂存区中删除。

$ git status

从输出中可以清楚地看到,使用 git rm 命令删除的文件会从工作区和暂存区中删除。请参阅下面的屏幕截图以查看输出。

On branch master
Changes to be committed:
   (use “git restore −−staged <file>...” to unstage)
      deleted:file1.js

现在让我们提交更改并验证输出。

$ git commit −m ‘remove unused js file’

输出表明该文件已永久从仓库中删除。

[master dc7861e] removed unused js file
1 file changed, 1 deletion(−)
delete mode 100644 file1.js

更新于: 2021年2月20日

1K+ 浏览量

开启您的 职业生涯

通过完成课程获得认证

开始学习
广告