📜  将 gitignore 应用于当前提交 - Shell-Bash (1)

📅  最后修改于: 2023-12-03 15:09:31.425000             🧑  作者: Mango

将 gitignore 应用于当前提交 - Shell-Bash

在使用 Git 进行代码管理时,我们经常会创建 .gitignore 文件来忽略一些不需要被提交版本控制的文件或文件夹。但是,有时候我们已经将这些文件或文件夹提交到了版本控制中,这时再添加 .gitignore 文件并不会删除之前已经提交的文件或文件夹。那么,如何将 .gitignore 文件中指定的文件或文件夹应用到当前提交中呢?本篇文章将为您提供解决方案。

方法一:使用 Git rm 命令

如果您已经在 .gitignore 文件中添加了忽略指令,且想要将这些指定的文件或文件夹从当前提交中移除,可以使用 Git rm 命令来删除它们。这个命令会同时删除工作区中的文件或文件夹,并将修改提交到版本控制中。具体的操作步骤如下:

  1. 首先,在编辑好 .gitignore 文件后,请确保您已经添加并提交了该文件到版本控制中,以便之后的修改生效。

  2. 然后,在 Shell 命令行中运行以下命令,将指定的文件或文件夹从当前提交中移除:

    git rm --cached file_or_folder_name
    

    其中,file_or_folder_name 是您要移除的文件或文件夹的名称。

  3. 最后,请使用以下命令提交您的修改:

    git commit -m "Remove ignored files or folders"
    

    因为您只是删除了指定的文件或文件夹,所以这个提交不会包含其他修改。

方法二:使用 Git filter-branch 命令

如果您不想删除指定的文件或文件夹,而是想将它们保留在工作区中,并删除之前已经提交的版本,可以使用 Git filter-branch 命令来重写提交历史。这个命令会对指定的提交范围应用一个或多个过滤器,并生成一个新的提交历史。具体的操作步骤如下:

  1. 在确认您已经添加并提交了 .gitignore 文件后,请在 Shell 命令行中运行以下命令,以将忽略指定的文件或文件夹添加到 .git/info/exclude 文件中:

    echo "file_or_folder_name" >> .git/info/exclude
    

    其中,file_or_folder_name 是您要忽略的文件或文件夹的名称。

  2. 然后,请使用以下命令来生成新的提交历史:

    git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch file_or_folder_name' --prune-empty --tag-name-filter cat -- --all
    

    这个命令会对所有分支应用一个过滤器,将其中的指定文件或文件夹移除,并生成新的提交历史。

  3. 最后,请使用以下命令强制推送您的新提交历史:

    git push --force
    

    注意:使用这个命令时,请务必谨慎。因为它会改变提交历史,所以请牢记不要在有其他人协作的情况下使用这个命令。

以上就是使用 Git 将 .gitignore 文件应用于当前提交的两种方法。根据您的具体情况,您可以选择适合自己的方法来实现。