在 Git 存储库中运行 `git add .git` 会发生啥?
Posted
技术标签:
【中文标题】在 Git 存储库中运行 `git add .git` 会发生啥?【英文标题】:What happens when you run `git add .git` in a Git repository?在 Git 存储库中运行 `git add .git` 会发生什么? 【发布时间】:2011-10-13 23:08:11 【问题描述】:虽然它似乎什么也没做,但它没有给出警告或错误消息。有什么想法吗?
【问题讨论】:
其实是一个相关的问题;我承认我刚刚做到了。我修改它是因为我想添加.gitignore
,但制表符补全在.git
处停止,所以我无意中做到了。我(和你一样)担心“我破坏了什么?”。
我这样做是因为我一直在使用 GNU stow 将 .git/info/exclude
文件安装到我与其他人共享的存储库中,并且我想放入包含此 .git
的 stow 包版本控制下的文件夹。
【参考方案1】:
简短的回答:什么都没有。
长答案:
laptop:Projects ctcherry$ mkdir test
laptop:Projects ctcherry$ cd test
laptop:test ctcherry$ git init .
Initialized empty Git repository in /Users/ctcherry/Projects/test/.git/
laptop:test ctcherry$ git add .git
laptop:test ctcherry$ git status
# On branch master
#
# Initial commit
#
nothing to commit (create/copy files and use "git add" to track)
laptop:test ctcherry$
【讨论】:
【参考方案2】:来自 Git 源码的评论:
/*
* Read a directory tree. We currently ignore anything but
* directories, regular files and symlinks. That's because git
* doesn't handle them at all yet. Maybe that will change some
* day.
*
* Also, we ignore the name ".git" (even if it is not a directory).
* That likely will not change.
*/
实验看看如果我创建一个文件.git
并尝试添加它会发生什么:
(在 Windows 上,当已有 .git
文件夹时,我无法创建文件 .git
。我也可以在子目录的其他位置创建 .git
,但想尝试 --git-dir
和 --work-tree
,我以前没用过。毕竟我在做实验。这也让我证明我可以添加git元数据文件夹,如下所示)
git --git-dir="c:/test" init
touch blah
git --git-dir="c:/test" --work-tree="." add .
git --git-dir="c:/test" --work-tree="." status ( shows blah added)
touch .git
git --git-dir="c:/test" --work-tree="." add .git ( no output as usual)
git --git-dir="c:/test" --work-tree="." status ( only blah shown)
是的,.git
- 无论是目录还是文件,都会被 git 忽略。
如果我执行以下操作:
git --git-dir="c:/test" --work-tree="c:/test" add c:/test
所有元文件都被添加。
再一次,据我所知,只有 .git
被忽略,而不是 git 元数据文件夹(您通过 --git-dir
设置)。
【讨论】:
您在源代码的哪个文件/修订版中找到了这条评论? 没关系,找到了——github.com/git/git/blob/… “git 元数据目录”是什么意思?你用--git-dir
设置的目录不是你的工作目录吗?
但是如果您尝试在.git
目录中添加文件in 会发生什么?那么名字就不会是“.git”了。以上是关于在 Git 存储库中运行 `git add .git` 会发生啥?的主要内容,如果未能解决你的问题,请参考以下文章
我应该在我的 Git 存储库中还是在专用的父目录中运行“pip install -r requirements.txt”?