如何在 Git 仓库中忽略之前已提交的文件?


.gitignore 文件不适用于已提交的文件。要忽略意外暂存或提交的文件的更改,应执行以下操作:

  • 步骤 1 - 从暂存区删除这些文件或目录

  • 步骤 2 - 提交仓库中的更改

  • 步骤 3 - 在 .gitignore 文件中添加这些文件或目录的路径

  • 步骤 4 - 提交对仓库的更改

让我们通过一个示例来理解这一点:

在工作目录中创建一个名为“bin”的文件夹。在文件夹中添加一个名为“temp.bin”的文件,并在其中添加一些内容,然后提交更改。

$ mkdir bin                    //create a directory
$ echo hello>bin/temp.bin      //create a file temp.bin in the directory
$ git add bin/temp.bin         //record the change in the staging area
$ git commit −m ‘add temp.bin’ //commit the change

提交命令的输出表明该文件已永久添加到仓库中。

[master dd1a3a8] add tremp.bin
1 file changed, 1 insertion(+)
create mode 100644 bin/temp.bin

在文件“temp.bin”中添加一行。使用 git status 命令检查此更改是否被跟踪。

$ echo hello again > bin/temp.bin
$ git status

输出如下所示,表明更改已被跟踪。

Changes not staged for commit:
(use “git add <file>...” to update what will be committed)
(use “git restore <file>..” to discard changes in working directory)
modified : bin/temp.bin
No changes added to commit

现在假设在稍后的某个时间点,我们决定应该忽略对“bin”文件夹的更改。将“bin”文件夹添加到 .gitignore 文件将没有任何效果,因为该文件已提交。为了忽略对已提交文件的更改,请执行以下操作:

步骤 1 - 从暂存区删除“bin”文件夹 - 必须记住,已提交的文件不会自动从暂存区删除。因此,让我们首先从暂存区删除该文件。这可以通过使用 git rm --cached -r 命令来实现。此命令的语法为:

git rm −−cached −r <file−name> OR
git rm −−cached −r <folder−name>

现在让我们删除“bin”文件夹。

$ git rm −−cached −r bin/

以上命令的输出显示在屏幕截图中:

rm ‘bin/temp.bin’

使用git ls-files验证该文件夹是否已从暂存区删除。

$ git ls−files

输出表明该文件夹已从暂存区删除。

.gitignore

步骤 2 - 提交仓库中的更改

$ git commit m ‘deleted bin folder from tracking’

验证输出以确认更改已提交。

dell@DESKTOP−N961NR5 MINGW64 /e/tut_repo (master)
$ git commit −m bin 'deleted bin folder from tracking changes'
[master 593aacd] deleted bin folder from tracking changes
   1 file changed, 1 deletion (−)
   delete mode 100644 bin/temp. bin

步骤 3 - 在.gitignore 文件中添加“bin”文件夹。我们假设.gitignore 文件已存在。

$ echo bin/ >>.gitignore

现在将更改添加到暂存区。

$ git add .gitignore

步骤 4 - 提交对仓库的更改

$ git commit −m ‘modified .gitignore to add bin/’

步骤 5 - 要验证 Git 是否正在跟踪“bin”文件夹,让我们对“temp.bin”文件进行更改,然后执行git status命令。

$ hello again from TutorialsPoint >>bin/temp.bin
$ git status

输出证明 Git 已完全忽略了在“bin”文件夹中执行的更改。

On branch master
Nothing to commit, working tree clean

更新于:2021年2月20日

5K+ 次浏览

启动您的 职业生涯

通过完成课程获得认证

开始学习
广告