gpt4 book ai didi

git - git 如何在 git repo 中知道它

转载 作者:行者123 更新时间:2023-12-04 16:38:27 24 4
gpt4 key购买 nike

我对 git 如何知道它在 git repo 中的实际情况很感兴趣。我的第一个想法是它只是将文件夹结构爬升到根目录(这可能涉及权限错误)。它是否记录在任何地方?

最佳答案

经验法则是 Git 只是查找文件路径来查找 .git 目录,但事实并非如此。 As Edward Thomson asks , bare repos 呢?没有 .git 目录?

这是血淋淋的细节。它开始于 setup_git_directory_gently_1搜索 Git 目录。

如果 GIT_DIR--git-dir设置它使用它。否则它会从当前工作目录或 -C 给出的路径开始搜索。 .

  1. 如果有 .git 文件 第一行 gitdir: <path>它将使用该路径。
  2. 如果 .git/ (非裸存储库)是一个 Git 目录,它使用它。
  3. 如果 ./ (一个裸存储库)是一个 Git 目录,它使用它。
  4. 向上移动一个目录并重新开始除非...
    1. 它已击中任何 GIT_CEILING_DIRECTORIES .
    2. GIT_DISCOVERY_ACROSS_FILESYSTEM不正确,它已达到文件系统边界。

如果所有这些都为真,则它是一个 Git 目录,来自 is_git_directory .

  1. HEAD包含语法上有效的引用。
  2. 有一个可访问的 objects目录,或者 GIT_OBJECT_DIRECTORY 设置的任何内容。
  3. 有一个可访问的 refs目录。

It is a non-bare Git directory如果它是一个 Git 目录并且它的父目录是 .git .

这是说服 Git 找到“Git 目录”的最低要求。

$ ls -lR
.:
total 4
-rw-r--r-- 1 schwern staff 27 Dec 29 14:50 HEAD
dr-xr-xr-x 2 schwern staff 64 Dec 29 14:50 objects
drwxr-xr-x 2 schwern staff 64 Dec 29 14:50 refs

./objects:
total 0

./refs:
total 0

$ cat HEAD
ref: refs/heads/yarblockos

可访问 objectsrefs目录,以及具有语法有效引用的 HEAD 文件。

如果它在 .git 中目录,那么它就是一个非裸存储库。

关于git - git 如何在 git repo 中知道它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65499497/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com