Проект против репозитория в GitHub


190

В GitHub, какова концептуальная разница между проектом (который может быть создан внутри хранилища) и хранилищем?

Я видел несколько похожих вопросов ( здесь , здесь и здесь ) в SO, но ни один из них не объясняет, что такое проект GitHub, что такое репозиторий GitHub и когда использовать каждый из них.

Я был бы признателен, если бы кто-то мог объяснить каждый термин и дать пример того, когда использовать / создавать каждый из них. Например, если у меня есть несколько прототипных приложений, не зависящих друг от друга, что я создаю, чтобы организованно управлять исходным кодом для всех них?


1
Github-репозиторий - это просто «каталог», в котором могут существовать файлы и папки. Другие люди могут создавать свои собственные копии этого «каталога» и изменять его по своему усмотрению, а затем запрашивать, чтобы их изменения были помещены в основной репозиторий. Что касается проектов, я не уверен, так как я никогда не использовал их.
августа

1
Вы сказали, что видели подобный вопрос, но действительно ли вы прочитали свою первую ссылку? «Это просто замечательно, а не мерзко. Вы можете иметь несколько репозиториев на проект». и другой ответ в той же теме: «У Git нет таких вещей, как проекты, только репозитории». Если вы на самом деле на самом деле имел в виду GitHub проекты , которые я хотел бы предложить , чтобы проверить GitHub документы об этом устройстве help.github.com/articles/...
PeeHaa

6
@PeeHaa да, я сделал. В самом первом предложении говорится следующее: «Это просто штука, а не мерзавец. Вы можете иметь несколько репозиториев на проект». Для меня это говорит о Gitorius, а не GitHub. Также говорится, что в Gitorious вы можете иметь несколько репозиториев на проект, но в GitHub все наоборот. Итак, я был бы очень признателен, если бы вы могли объяснить, как это отвечает на мой вопрос?
Карлосьерра

2
Я думаю, что это касается семантики, когда новая функция Projects - визуальная доска - вступает в противоречие с перегруженным использованием термина Project. Вероятно, что это не вопрос программирования.
osowskit

2
Это должно быть все , что вам нужно github.com/blog/...
osowskit

Ответы:


110

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

проект

Repository как описано на GitHub:

Репозиторий является самым основным элементом GitHub. Их проще всего представить как папку проекта. Репозиторий содержит все файлы проекта (включая документацию) и хранит историю изменений каждого файла. Репозитории могут иметь несколько соавторов и могут быть как общедоступными, так и частными.

Проект как документировано на GitHub:

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

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


1
Итак, я использую Github для хранения кода для своих отдельных исследовательских проектов A, B, C и т. Д. Если я правильно понимаю, каждый исследовательский проект получит свой собственный репозиторий? Итак, А получает репозиторий, Б получает репозиторий, С получает репозиторий и т. Д.?
Плинтус

Когда вы разветвляете репозиторий, имеет ли ваш форк доступ к снимку доски проекта?
geominded

7
как это выбирается в качестве принятого ответа? просто скопируйте пасту из того, что описано. ОП может прочитать его, но люди хотят знать на простых примерах.
Батмачи

153

Факт 1: Проекты и репозитории всегда были синонимами на GitHub.

Факт 2: это больше не так.

Существует много путаницы в отношении хранилищ и проектов. В прошлом оба термина использовались в значительной степени взаимозаменяемо пользователями и собственной документацией GitHub. Это отражено в некоторых ответах и ​​комментариях, которые объясняют тонкие различия между этими терминами и тем, когда один из них предпочтительнее другого. Разница всегда была неуловимой, например, трекер проблем был частью проекта, но не частью репозитория, который можно было бы считать строго мерзкой вещью и т. Д.

Уже нет.

В настоящее время репозитории и проекты относятся к различным видам сущностей, которые имеют отдельные API :

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

Как следствие, репо и проекты обычно перепутаны, и каждый раз, когда вы читаете о проектах GitHub, вы должны задаться вопросом, действительно ли речь идет о проектах или о репо. Если бы они выбрали какое-то другое имя или аббревиатуру, например, «proj», тогда мы могли бы знать, что речь идет о новом типе сущности, точном объекте с конкретными свойствами или общепринятой репо-подобной проектной штуке.

Термин, который обычно однозначен, - «проектная доска» .

Что мы можем узнать из API

Первая конечная точка в документации по Projects API:

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

{
  "message": "Projects are disabled for this repo",
  "documentation_url": "https://developer.github.com/v3"
}

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

Есть и другие интересные конечные точки:

  • Создать проект репозитория -POST /repos/:owner/:repo/projects
  • Создать проект организации -POST /orgs/:org/projects

нет , но есть нет :

  • Создать проект пользователя -POST /users/:user/projects

Что приводит нас к другому различию:

1. Хранилища могут принадлежать пользователям или организациям.
2. Проекты могут принадлежать хранилищам или организациям.

или, что более важно:

1. Проекты могут принадлежать репозиториям, но не наоборот
2. Проекты могут принадлежать организациям, но не пользователям
3. Репозитории могут принадлежать организациям и пользователям

Смотрите также:

Я знаю, что это сбивает с толку. Я пытался объяснить это так точно, как мог.


В Bitbucket от Atlassian вы можете создавать проекты, включающие семейство связанных репозиториев. Есть ли у Github такая организационная особенность? Я ожидал, что Github Projects будет такой, но это явно не так. Я не могу понять, как сделать эту организацию возможной в Github. Я очень привык к Bitbucket, так что это может быть просто кривой обучения.
Ungeheuer

В определенном смысле для меня было бы больше смысла, если бы один проект мог иметь несколько репозиториев. У меня сложилось впечатление, что GitHub заметил, что он стареет, и вместо полной редизайн просто решил сделать обходной путь и продать его как хорошую вещь. Кстати, кто сейчас является владельцем GitHub? Возможно, ответ дает некоторое представление о том, почему это происходит. Просто мысли вслух.
Альмир Кампос

19

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

Git Project: это также один из ресурсов в Git Repository, и основное его использование - управление проектами с помощью визуальной доски. Если вы создаете проект в Git Repository, он создает визуальную доску, например доску Канбан, для управления проектом.

Таким образом, вы можете иметь несколько проектов в хранилище.


4

В общем, на GitHub, 1 репозиторий = 1 проект . Например: https://github.com/spring-projects/spring-boot . Но это не жесткое правило.

1 репозиторий = много проектов . Например: https://github.com/donhuvy/java_examples

1 проектов = много репозиториев . Например: https://github.com/zendframework/zendframework (1 проект с именем Zend Framework 3 имеет 61 + 1 = 62 репозитория, не верьте? Давайте посчитаем модули Zend Frameworks + основной репозиторий)

Я полностью согласен с @Brandon Ибботсон «s комментарий :

Репозиторий GitHub - это просто «каталог», в котором могут существовать папки и файлы.


Спасибо за ваш ответ. Но я не думаю, что ваше определение проекта - это то, что GitHub называет проектом, так как примеры репозиториев с несколькими проектами ничего не показывают на вкладке Projects для этих репозиториев. Можете ли вы уточнить это?
Карлосьерра

2
На самом деле, пример использования Zend Framework совершенно неверен! Согласно номенклатуре GitHub, существует организация с именем "zendframework", которая владеет множеством репозиториев, включая одно, называемое "zendframework" и по одному для каждого модуля фреймворка.
igorcadelima

3
9 ноября 2017: пример 1 репозитория = многие проекты возвращают 404.
Брэм Ванрой

1
ссылки не работают
Pmpr

1
С точки зрения GitHub, этот ответ противоречит другим более популярным ответам выше.
Манохар Редди Поредди

1

Что касается словаря git, Проект - это папка, в которой находится фактический контент (файлы). Принимая во внимание, что Repository (repo) - это папка, внутри которой git хранит записи обо всех изменениях, внесенных в папку проекта . Но в общем смысле эти два можно считать одинаковыми. Проект = Репозиторий


1

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

Имеет ли это смысл? В большом репо может быть много проектов, над которыми работают разные люди одновременно (в монолит добавлено много разных функций), в большом проекте может быть много небольших репо, которые являются отдельными, но являются частью одного и того же проекта, взаимодействующего с каждым другое - микросервисы? Это личный взгляд на то, что вы хотите сделать. Я думаю, что основное отличие - репо (хранение) от проекта (задачи) - если я ошибаюсь, пожалуйста, дайте мне знать / объяснить! Спасибо.


0

Это моё личное понимание по теме.

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

Относительно вашего проекта (несколько прототипов приложений, которые не зависят от каждого из них). Вы можете управлять проектом одним хранилищем или несколькими хранилищами, разница:

  1. Управление одним хранилищем. Если одно из приложений будет изменено, весь проект (все приложения) будет зафиксирован в новой версии.

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.