前言

在日常开发中,我们常常会遇到这样的情况:不小心将不应追踪的文件提交到了 Git 仓库中,例如配置文件、临时文件等。尽管可以通过 .gitignore 文件来忽略这些文件,但如果文件已经被提交到远程仓库,那么仅仅在 .gitignore 中添加规则并不能让 Git 忽略它们。本文将详细介绍如何处理这种情况,并最终使 Git 忽略这些文件。

在这里插入图片描述


一、确认文件是否已经被提交

首先,我们需要确认目标文件是否已经被提交到 Git 仓库中。可以通过以下命令查看仓库中所有被追踪的文件:

git ls-tree -r master --name-only

如果目标文件出现在输出列表中,说明它已经被提交并被 Git 跟踪。

也有简单粗暴的办法,那就是随便给你要确认的文件修改一点,看在vscode的源代码管理是否会出现在列表里

二、确认 .git 文件存在

在项目根目录下,.git 文件夹包含了所有的 Git 配置和版本控制信息。使用以下命令查看 .git 文件夹是否存在:

ls --all

如果看到蓝色的 .git 文件夹,说明这是一个 Git 仓库,接下来我们需要对该文件夹进行进一步操作。
在这里插入图片描述

三、修改 .git/info/exclude 文件

.gitignore 文件中的规则是全局的,影响整个仓库的文件忽略。但如果我们只想在当前本地仓库忽略一些文件,可以修改 .git/info/exclude 文件。这是一个类似于 .gitignore 的文件,但它仅作用于当前本地仓库。

使用以下命令打开 .git/info/exclude 文件进行编辑

code .git/info/exclude

在文件末尾添加一行:

*.temp.*

这意味着忽略所有中间包含 “temp” 的文件,例如 contract-addresses.temp.json
在这里插入图片描述

四、修改文件名

为了让 Git 忽略已经被提交的文件,我们可以通过重命名该文件来避开 Git 的追踪。以 contract-addresses.json 为例,我们可以将其改名为 contract-addresses.temp.json。具体步骤如下:

  1. 手动或使用命令行工具重命名文件:
mv contract-addresses.json contract-addresses.temp.json
  1. 此时,新的文件名会符合 .git/info/exclude 中的规则,Git 将不再追踪这个文件。文件名就变为灰色说明已经忽略掉了
    在这里插入图片描述

五、提交和推送

重命名文件后,我们需要更新 Git 的记录。执行以下命令来提交更改并推送到远程仓库:

git add .
git commit -m 'fix: rename and ignore unwanted file'
git push

这样,我们就从 Git 的追踪中移除了旧的文件名,同时新的文件名也不会再被 Git 跟踪。

六、验证

要注意的是再重新生成之前要确保 .gitignore文件已经添加了文件名,否则生成了新的文件又会被git追踪到
在这里插入图片描述

最后,重新生成 contract-addresses.json 文件,确认它已经成功被忽略,不再出现在 git status 的输出中。这表明我们已经成功地将其从 Git 的追踪中移除。


总结

通过本文,我们详细介绍了如何忽略已经提交到 Git 仓库中的文件,包括确认文件是否已被提交、修改 .git/info/exclude 文件、重命名文件以避免追踪以及提交和推送更新等步骤。通过这些步骤,我们成功地将已经提交的文件从 Git 的追踪中移除,同时保证新的文件不会再被 Git 跟踪。这种方法特别适用于处理那些不小心提交的敏感信息或不必要的文件,确保它们不会再次被纳入 Git 的版本控制。同时,我们还强调了在生成新文件之前,确保 .gitignore 文件中已包含相应的忽略规则,以避免新文件再次被 Git 追踪。希望这篇文章能帮助你更好地管理和使用 Git 进行版本控制。如果你有任何疑问或建议,欢迎在评论区留言讨论。🌹

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐