Каталог хранилища Git. Подробные сведения

  оглавление

1. Пример среды

Во-вторых, структура каталогов

2.1 Каталог филиалов

2.2 Файл COMMIT_EDITMSG

2.3 файл конфигурации

2.4 файл описания

2.5 HEAD файл

2.6 каталог хуков

2.7 индексный файл

2.8 информационный каталог

2.9 каталог журналов

2.10 каталог объектов

2.11 каталог ссылок

3. Ссылки


Когда Git создает хранилище, он создает скрытый каталог с именем .git в текущем каталоге хранилища для хранения конфигурации хранилища и информации о данных. В этой статье будет представлен основной каталог репозитория Git с примерами.

1. Пример среды

Все следующие примеры выполняются в следующей среде:

Системная среда: CentOS Linux, выпуск 7.6.1810 (Core)

версия git: версия git 1.8.3.1

Удаленный склад: GitHub.

Во-вторых, структура каталогов

Используйте команду git init для инициализации хранилища. Начальная структура каталога (.git) выглядит следующим образом:

[root@192 testgit]# tree .git
.git
├── branches
├── config
├── description
├── HEAD
├── hooks
│   ├── applypatch-msg.sample
│   ├── commit-msg.sample
│   ├── post-update.sample
│   ├── pre-applypatch.sample
│   ├── pre-commit.sample
│   ├── prepare-commit-msg.sample
│   ├── pre-push.sample
│   ├── pre-rebase.sample
│   └── update.sample
├── info
│   └── exclude
├── objects
│   ├── info
│   └── pack
└── refs
    ├── heads
    └── tags

9 directories, 13 files
[root@192 testgit]# 

 Это инициализированное хранилище, когда ветвь dev-branch создается и отправляется, структура каталогов выглядит следующим образом:

[root@192 testgit]# tree .git/
.git/
├── branches
├── COMMIT_EDITMSG
├── config
├── description
├── HEAD
├── hooks
│   ├── applypatch-msg.sample
│   ├── commit-msg.sample
│   ├── post-update.sample
│   ├── pre-applypatch.sample
│   ├── pre-commit.sample
│   ├── prepare-commit-msg.sample
│   ├── pre-push.sample
│   ├── pre-rebase.sample
│   └── update.sample
├── index
├── info
│   └── exclude
├── logs
│   ├── HEAD
│   └── refs
│       ├── heads
│       │   ├── dev-branch
│       │   └── master
│       └── remotes
│           └── origin
│               └── master
├── objects
│   ├── 2d
│   │   └── d2c71b69c837a7459f4bd9c9f7db6520731d06
│   ├── 5c
│   │   └── 7b8eda18a75e13d27c31e65a54b0abd7948510
│   ├── 77
│   │   └── cad3aecf7c2754231095598119979d62a1e1da
│   ├── info
│   └── pack
└── refs
    ├── heads
    │   ├── dev-branch
    │   └── master
    ├── remotes
    │   └── origin
    │       └── master
    └── tags

19 directories, 25 files
[root@192 testgit]# 

Далее мы подробно расскажем о каждом каталоге и файле.

2.1 Каталог филиалов

Редкий сокращенный метод хранения, используемый для указания URL-адресов git fetch, git pull и git push, который в настоящее время в основном не используется.

2.2 Файл COMMIT_EDITMSG

Это легче понять, изменив верхний регистр на нижний, commit_editmsg: информация об изменении фиксации, записывать только последнюю отправленную информацию об изменении фиксации, например:

[root@192 testgit]# vim README
[root@192 testgit]# git add .
[root@192 testgit]# git commit -m "modify README file"
[master 2392c4d] modify README file
 1 file changed, 2 insertions(+), 1 deletion(-)
[root@192 testgit]# git push origin master
Counting objects: 5, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 315 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To [email protected]:New-World-2019/testgit.git
   3cbe67c..2392c4d  master -> master
[root@192 testgit]# cat .git/COMMIT_EDITMSG 
modify README file
[root@192 testgit]# 

В приведенном выше примере сначала измените файл README, затем отправьте его на удаленный компьютер, напишите «изменить файл README» при фиксации, а затем просмотрите файл COMMIT_EDITMSG и сохраните примечания при отправке. 

2.3 файл конфигурации

Просто посмотрите на имя и сохраните информацию о конфигурации текущего хранилища. Файл конфигурации git разделен на три уровня, а именно:

  1. / И т.д. / файл gitconfig: Система общая конфигурация каждого пользователя и их склад на;
  2. ~ / .gitconfig или ~ / .config / git / config файл: конфигурация хранилища текущего пользователя ;
  3. .git / config файл (под текущим хранилищем): конфигурация текущего хранилища текущего пользователя ;

Самый нижний уровень имеет наивысший приоритет и будет перезаписывать информацию о конфигурации верхнего уровня. Вышеупомянутые файлы можно изменить с помощью параметра конфигурации git. Настраиваемая информация включает в себя: информацию о пользователе, информацию http, информацию о хранилище и т. Д.

[root@192 testgit]# cat ~/.gitconfig 
[user]
        name = New-World-2019
        email = [email protected]
[http]
        postBuffer = 1048576000
        lowSpeedLimit = 0
        lowSpeedTime = 999999
[root@192 testgit]# cat .git/config 
[core]
        repositoryformatversion = 0
        filemode = true
        bare = false
        logallrefupdates = true
[remote "origin"]
        url = [email protected]:New-World-2019/testgit.git
        fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
        remote = origin
        merge = refs/heads/master
[branch "dev-branch"]
        remote = origin
        merge = refs/heads/dev-branch
[root@192 testgit]# git config --list
user.name=New-World-2019
[email protected]
http.postbuffer=1048576000
http.lowspeedlimit=0
http.lowspeedtime=999999
core.repositoryformatversion=0
core.filemode=true
core.bare=false
core.logallrefupdates=true
[email protected]:New-World-2019/testgit.git
remote.origin.fetch=+refs/heads/*:refs/remotes/origin/*
branch.master.remote=origin
branch.master.merge=refs/heads/master
branch.dev-branch.remote=origin
branch.dev-branch.merge=refs/heads/dev-branch
[root@192 testgit]# 

В приведенном выше примере, если файл / etc / gitconfig не создан в системе, он не печатается. Видно, что результатом выполнения команды git config --list в текущем хранилище является сумма файлов ~ / .gitconfig и .git / config. Если вам нужно узнать больше информации о конфигурации, вы можете узнать больше с помощью команды git config.

2.4 файл описания

Используется для отображения информации об описании проекта в GitWeb. По умолчанию содержимое выглядит следующим образом:

Unnamed repository; edit this file 'description' to name the repository.

2.5 HEAD файл

Сохраните указатель HEAD так, чтобы он указывал на текущую ветвь, то есть запишите текущую активную ветвь, например:

[root@localhost testgit]# git status
# 位于分支 master
无文件要提交,干净的工作区
[root@localhost testgit]# cat .git/HEAD 
ref: refs/heads/master
[root@localhost testgit]# git checkout dev-branch
切换到分支 'dev-branch'
[root@localhost testgit]# cat .git/HEAD 
ref: refs/heads/dev-branch
[root@localhost testgit]# 

В приведенном выше примере он запускается в ветке master.После переключения на ветку dev-branch содержимое файла .git / HEAD становится refs / Heads / dev-branch.

2.6 каталог хуков

В каталоге хранится множество файлов ловушек (некоторые скрипты). Эти файлы представляют собой пользовательские скрипты, используемые различными командами Git и могут автоматически выполняться на определенных этапах Git, таких как: фиксация, перебазирование, извлечение) до и после операции. Некоторые примеры хуков устанавливаются при запуске git init, но все они по умолчанию отключены. Если вы хотите включить его, вам необходимо удалить суффикс файла .sample.

2.7 индексный файл

Область временного хранения (сцена), двоичный файл.

2.8 информационный каталог

Другая информация репозитория будет записана в этом каталоге.

info / exclude:  игнорировать файлы в указанном режиме, аналогично .gitignore, но .gitignore специфичен для каждого каталога.

2.9 каталог журналов

Сохраните все обновленные справочные записи. Структура каталогов следующая:

[root@localhost logs]# tree
.
├── HEAD
└── refs
    ├── heads
    │   ├── dev-branch
    │   └── master
    └── remotes
        └── origin
            ├── dev-branch
            └── master

4 directories, 5 files
[root@localhost logs]# 

Среди них HEAD записывает все записи изменений, включая переключение ветвей, и сохраняет записи изменений локальных и удаленных ветвей в журналах / ссылках. 

2.10 каталог объектов

Git - это файловая система с адресацией по содержимому. Основная часть Git - это простое хранилище данных типа "ключ-значение". Вы можете вставить любой тип контента в репозиторий Git, и он вернет уникальный ключ, с помощью которого контент можно будет получить снова в любое время.

Простое понимание таково: каталог объектов - это база данных Git (база данных пар ключ-значение, которую можно представить в виде map [key] = value). Доступ к содержимому осуществляется в соответствии с ключом, а ключ - это значение рассчитывается SHA1. В этом каталоге хранятся объекты трех типов (не более): объекты данных (объекты blob), объекты дерева (объекты дерева) и объекты фиксации (объекты фиксации).

(1) каталоги информации и пакетов

Когда сохраненный файл очень большой, git сожмет его и сохранит под info и pack;

(2) Каталог 2-символьных команд

Во-первых, эти две буквы являются первыми двумя символами вычисленного значения SHA1 (всего 40 символов), а остальные 38 - именами файлов в каталоге.

2.11 каталог ссылок

(1) каталог руководителей

Каталог содержит файлы, названные по имени каждой локальной ветки , и сохраняет последний представленный идентификатор соответствующей ветки, который представляет собой строку, рассчитанную алгоритмом SHA1.

(2) удаленный каталог

Каталог содержит файлы, названные в честь имени каждой удаленной ветки , сохраняет идентификатор последней отправки соответствующей ветки и принцип каталога голов.

(3) каталог тегов

Храните теги, созданные в процессе разработки, файлы внутри управляются именем тега, а содержимое файла является соответствующим идентификатором.

3. Ссылки

[1]  Что такое файл описания Git?

[2]  gitignore

[3]  ветки git

[4]  gitrepository-layout

 

 

 

 

рекомендация

отblog.csdn.net/u011074149/article/details/109406589