Как пометить одну папку из репозитория git - PullRequest
0 голосов
/ 05 марта 2019

Можем ли мы пометить одну папку из репозитория git?

У нас есть репозиторий git с разными папками, мы не хотим помечать весь репозиторий.Мы просто хотим пометить одну папку из этого репозитория git.

Возможно или лучше иметь разные репозитории вместо одного репозитория?

Ответы [ 2 ]

1 голос
/ 05 марта 2019

Нет, вы не можете связать тег с папками внутри репозитория git

Это потому, что каждый тег связан с конкретным коммитом.

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

Если каждая из ваших папок не связана друг с другом, да, у вас обязательно должно быть два отдельных хранилища.

Давайте представим эту временную шкалу:

 * 4bde21c 5m ago, Fix spelling (master)
 * 4bde21c 10h ago, Fix foo (v1.0-foo)
 * 7cdeba1 3 days ago, Fix bar (v1.0-bar)
 * 3cd4aa1 10 days ago, Create bar
 * 21a57d2 1 month ago, Create foo

Теги v1.0-foo и v1.0-bar являются просто ссылками на коммиты:

 v1.0-foo -> 4bde21c
 v1.0-bar -> 7cdeba1 

Итак, как бы вы оценили версию репозитория bar в теге v1.0-foo?

0 голосов
/ 05 марта 2019

Не знаю, зачем вам это нужно, поэтому я просто дам несколько советов.

Папка с отслеживаемыми файлами в репозитории Git имеет собственную ревизию, которая хранится в виде древовидного объекта.Объект записывает имена своих файлов и подпапок и собственные хеши объектов.Но объект не хранит свой собственный путь, который хранится в объекте дерева его родительской папки.Если это корневая папка репозитория, его путь не сохраняется вообще.Поскольку это может быть любое имя, когда оно клонируется или инициализируется.

Скажите, что путь к папке в хранилище: ./foo.Вы можете запустить git ls-tree <commit> -- foo или git rev-parse <commit>:foo, чтобы увидеть хеш дерева foo.Вы можете пометить его как git tag <tagname> <tree_hash>, или не зная его хеш-код: git tag <tagname> <commit>:foo.

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

Поскольку мы можем использовать <commit>:<path> для описания пути и содержимого папки, вам не нужно создавать дополнительный тег, если вы знаете коммит и путь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...