探究.gitignore与.gitkeep的区别
探究.gitignore与.gitkeep的区别
技术背景
在使用Git进行版本控制时,我们常常会遇到一些情况,比如有些文件(如编译生成的文件、临时文件等)不需要纳入版本控制,而有些空目录又希望能在仓库中保留。为了解决这些问题,Git提供了.gitignore
文件,同时开发者们还约定俗成地使用.gitkeep
文件来处理空目录的跟踪问题。
实现步骤
.gitignore 的使用
- 创建文件:在项目根目录或子目录下创建一个名为
.gitignore
的文本文件。 - 添加规则:在文件中添加需要忽略的文件或目录的规则。例如:
1 |
|
- 提交生效:将
.gitignore
文件添加到仓库并提交,之后Git就会按照规则忽略相应的文件和目录。
.gitkeep 的使用
- 创建文件:在需要保留的空目录下创建一个名为
.gitkeep
的文件,可以使用touch /path/to/emptydirectory/.gitkeep
命令。 - 提交目录:将包含
.gitkeep
文件的目录添加到仓库并提交,这样空目录就会被保留在仓库中。
核心代码
.gitignore 示例
1 |
|
.gitkeep 示例
1 |
|
最佳实践
- .gitignore:将通用的忽略规则放在项目根目录的
.gitignore
文件中,对于特定子目录的规则可以在该子目录下创建.gitignore
文件。例如,在前端项目中,通常会忽略node_modules
目录,在根目录的.gitignore
中添加node_modules/
。 - .gitkeep:当需要保留一个空目录时,直接在该目录下创建
.gitkeep
文件。例如,在项目中创建一个logs
目录用于存放日志文件,初始时该目录为空,可以在其中创建.gitkeep
文件,确保该目录被纳入版本控制。
常见问题
.gitignore 规则不生效
可能是因为文件已经被纳入版本控制,需要先从缓存中移除该文件,再提交.gitignore
文件。可以使用git rm --cached <file>
命令移除缓存中的文件。
.gitkeep 不是官方特性
虽然.gitkeep
不是Git的官方特性,但它是一种广泛使用的约定。如果不想使用.gitkeep
,也可以使用空的.gitignore
文件来达到类似的效果。
探究.gitignore与.gitkeep的区别
https://119291.xyz/posts/2025-05-13.explore-differences-between-gitignore-and-gitkeep/