如何从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