文件夹添加到gitignore后,git里面还有记录

307 阅读3分钟

这篇笔记主要记录,把文件夹添加到gitignore里后,执行git status后,发现还有记录。

如图,已经把unpackage添加到了unpackage, 还是有记录

image.png

原因就是: 即使添加了 .gitignore,之前已经被 Git 追踪的 unpackage 文件依然会保留在 Git 中。你需要执行以下步骤来从版本控制中移除这些文件:

删除已被追踪的 unpackage 文件
git rm -r --cached unpackage

这条命令会移除 unpackage 文件夹及其内容的追踪,但不会删除本地文件。看下效果

image.png

命令 git rm -r --cached unpackage 的作用是从 Git 仓库的暂存区 中移除 unpackage 文件夹及其所有内容,但不会删除你本地文件系统中的 unpackage 文件夹。这意味着 Git 不再追踪这些文件的变化,但它们仍然会保留在你的本地工作目录中。

命令解析:

  1. git rm:删除文件或文件夹的命令。
  2. -r:递归地删除目录及其所有子文件。这是因为 unpackage 是一个文件夹,需要递归删除其中的内容。
  3. --cached:只从 Git 的暂存区(staging area)中删除文件,而不删除工作目录中的实际文件。这是关键部分,它允许你保留本地文件,同时让 Git 停止跟踪它们。

具体作用:

保留本地文件:unpackage 文件夹及其内容会保留在你的本地项目中。
从 Git 中移除追踪:Git 将停止追踪 unpackage 文件夹中的文件,不再包含在后续的提交中。
配合 .gitignore 使用:这个命令配合 .gitignore 文件,防止 unpackage 文件夹及其内容在未来被重新添加到 Git 仓库中。

举个例子:

假设你有一个 unpackage 文件夹已经被提交到 Git,但你现在想忽略它,那么你会按照以下步骤操作:

  1. 在 .gitignore 中添加 unpackage/ 以忽略该文件夹。
  2. 执行命令 git rm -r --cached unpackage,从 Git 仓库中移除 unpackage 的追踪。
  3. 提交这个更改到仓库,确保 unpackage 不再被提交。

总结:

git rm -r --cached unpackage 用于停止 Git 跟踪 unpackage 文件夹,而不会删除本地的实际文件,非常适合用于忽略类似构建输出目录等不需要提交到 Git 的文件夹。

One more thing 关于DS_Store

上面的截图中,有一些DS_Store的记录,那么DS_Store是什么文件呢

	modified:   .DS_Store
	modified:   pages.json
	modified:   pages/address/address.vue
	modified:   static/.DS_Store
	modified:   static/images/.DS_Store

.DS_Store 是 macOS 系统在每个文件夹中自动生成的隐藏文件,主要用于存储该文件夹的显示属性,例如图标位置、窗口尺寸、排序设置等。这些文件对项目本身没有任何影响,因此不需要被提交到 Git 仓库中。

解决方法:忽略 .DS_Store 文件

  1. .gitignore 文件中添加规则
    打开项目的 .gitignore 文件,并添加以下行来忽略所有 .DS_Store 文件:
.DS_Store
  1. 移除已被追踪的 .DS_Store 文件
    如果 .DS_Store 文件已经被提交到仓库,你需要从 Git 追踪中移除它们:执行下面命令,
git rm --cached .DS_Store
git rm --cached static/.DS_Store
git rm --cached static/images/.DS_Store
  1. 提交更改
git add .gitignore
git commit -m "Ignore .DS_Store files"
git push