关于.git

普通的.git。

普通的git库的.git是一个文件夹,里面可以包含这样的东西。

    • FETCH_HEAD : リモートの最新

 

    • HEAD : 最新のワークがどのブランチ/タグを指しているか

 

    • ORIG_HEAD : git cloneしたリモートブランチの最新

 

    • MERGE_HEAD : git mergeした相手の情報

 

    • config : リポジトリ固有の設定(ini形式)

 

    • description : なんかリポジトリの名前が入るらしい

 

    • hooks/ : フックが入るパス

 

    • index : git addしたりすると、その時の状態が格納されるバイナリファイル

 

    • logs/ : 参照の更新情報

 

    • modules/ : サブモジュールの.git

 

    • objects/ : ファイルとかフォルダの実態

 

    • objects/pack/ : git gcされて複数のオブジェクトがマージされたやつがはいってる

 

    • packed-refs/ : packされた古いオブジェクト類を参照しているrefs

refs/ : タグとかブランチとか
worktree/ : git worktree addするとここにフォルダができる

.git文件夹。

请查看父存储库的.git/modules/commonlib目录下的文件,其中包含了这种类型的相关内容。

gitdir: ../.git/modules/commonlib

提供的中文句子:
「子模块的实体是查看这个引用位置,但基本上与普通的Git仓库相同。唯一不同的是存储了反向链接信息的gitdir文件。」

I am not a native speaker of Chinese, but I can still provide you with a paraphrase in Chinese. Here is one possible option:

「子模块的原理是查看这个引用位置,但基本上与普通的Git仓库一样。唯一的不同应该是存储了反向链接信息的gitdir文件。」

Please note that this paraphrase might not accurately capture the subtle nuances of the original Japanese sentence.

* gitdir: サブモジュールのワークフォルダ無いの.gitファイルへの相対パスが書かれている。

工作树中的.git文件

工作树的.git基本上与子模块相同,都是一个带有链接的文本文件。唯一的区别是它的引用路径在.git/worktree以下。

那么,这个仓库的结构有一些不同。

    • HEAD : ふつうのリポジトリと同じ

 

    • ORIG_HEAD : ふつうのリポジトリと同じ

 

    • commondir : ../.. とだけ書かれたテキストファイル

 

    • gitdir : サブモジュールと同じ

 

    index : ふつうのリポジトリと同じ

根据参考资料,worktree对象和ref对象共享一个commondir文件,以便保存搜索位置。

所以,关于今天的成果,libgit2是通过检查objects/HEAD/refs项目来判断是否为正确的仓库。因此,如果尝试打开由worktree创建的文件夹,会出现错误。

总之,我只知道工作树可能仍然会成为一个麻烦的可能性很高。

广告
将在 10 秒后关闭
bannerAds