【发布时间】:2016-09-04 00:47:31
【问题描述】:
我想通过了解进入时实际发生的情况来更好地理解git-plumbing
git add $DIRECTORY
和
git add $FILE
它是如何工作的?
阅读progit's git internals section可以大致了解一下。
- 如果
$DIRECTORY是一个目录,类似于find $DIRECTORY -type f -exec git add {} \;,即递归添加$DIRECTORY中的所有文件。然后,git add $FILENAME应用于每个文件。 - 检查
.gitignore(及其“上级”) - 检查
.gitattributes,如果适用,运行clean过滤器 -
git hash-object -wcleaned 内容
然后,索引以某种方式得到更新,这涉及到git mktree。但是那里到底发生了什么?目录的树是否仅包含添加的文件或之前提交的所有文件?接下来会发生什么?
【问题讨论】:
-
是的,Git 是否会在每次
diff或add等时对所有内容进行递归搜索?
标签: git-plumbing git git-add git-plumbing