Что означают эти слова в Git: репозиторий, вилка, ветвь, клон, трек?

130

Я, честно говоря, не понимаю семантику здесь. Все они касаются копий / вариантов единицы кода + истории, но я не уверен, что могу сказать о прошлом. Объясняется ли где-нибудь эта логическая структура?

Эрик Андерсон
источник
5
Я бы порекомендовал прочитать пару первых глав книги Pro Git ( progit.org/book ).
ewall
61
+1. Многие из руководств по git показывают, как выполнять определенные задачи, без объяснения того, что означают определенные слова или как работает git. Вопрос о ресурсе, посвященном этой теме, является законным.
Даниэль Штутцбах
14
Хотел бы я еще +1 к комментарию Даниэля. Хотя значение некоторых терминов (например, репозиторий) должно быть очевидным, их взаимосвязь не всегда (ветвь или ветвь), и реальное значение легко неверно истолковать тем, кто привык к централизованной VCS. Кроме того, посмотрите на Pro Git "что такое ветка?" раздел - действительно ли базовый пользователь хочет знать о каплях и деревьях, или он просто хочет знать качественно, что такое ветвь?
Cascabel
1
@DanielStutzbach можно оставлять комментарии о вещах, которые не ясны в книге. (Я не знаю правильной терминологии, чтобы сказать это.) Я сделал это, я сказал, что книга должна определить, что такое репозиторий. Я согласен с тем, что довольно сложно получить концептуальный материал от людей, которые что-то очень хорошо понимают. В этой книге (в настоящее время) говорится о базах данных без определения того, что они собой представляют в данном контексте, и ничего не говорится о том, что такое репозитории.
user34660 02

Ответы:

146

Репозиторий - это просто место, где хранится история вашей работы. Он часто находится в .gitподкаталоге вашей рабочей копии - копии самого последнего состояния файлов, над которыми вы работаете.

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

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

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

В Интернете есть много отличных книг по git. Для начала ознакомьтесь с ProGit и Git Magic , а также с официальными руководствами и книгой сообщества.

МСЧ
источник
Конечно, чтение руководств и учебных пособий по F имеет основополагающее значение. Но мне кажется, что это отличное обобщение всего. Очень признателен!
brasofilo
Обратите внимание, что вы можете переключить локальный рабочий каталог на новую ветку («git checkout <new_branch>»). В этом случае файлы вашего локального рабочего каталога ЗАМЕНЯЮТСЯ содержимым ветки, на которую вы переключаетесь. Но вы не потеряете свою работу: Git хранит все зафиксированные изменения («git commit»), сделанные вами в предыдущей ветке, в «базе данных» Git (скрытая папка .git) и позволит вам переключить обратно ваши файлы.
KrisWebDev
3
Я думаю, это требует особого упоминания, что исторически, независимо от того, какую VCS вы использовали, разветвление и ветвление считались двумя разными вещами. Разветвление считалось благоприятным и подразумевало соглашение между разработчиками. Форкинг был более серьезным, поскольку подразумевал, что разработчики, работающие над проектом, не пришли к соглашению по некоторым вопросам и решили разойтись. Успешные форки обычно объединялись в один проект позже, после того как обе стороны пришли к соглашению. С тех пор Git (и GitHub) размыли эти термины, и оба термина в основном представляют одну и ту же идею, но по-разному.
redteam316
Значит, в репозитории нет файлов проекта? Вы говорите место, где хранится история вашей работы . В том, что все? Только история файлов, а не сами файлы?
user34660 02
13

Я собираюсь ответить на свой вопрос с помощью RTFM.

Но прочтите это прекрасное руководство. Как выразился автор:

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

«К сожалению, половина существующих ресурсов Git использует именно такой подход: они показывают, какие команды и когда запускать, и ожидают, что у вас все будет хорошо, если вы просто имитируете эти команды. Другая половина действительно рассматривает все концепции, но, судя по тому, что я видел, они объясняют Git таким образом, чтобы вы уже понимали, как работает Git ».

Эрик Андерсон
источник
Это введение, похоже, было перемещено на sbf5.com/~cduan/technical/git . Исходный URL-адрес пока работает.
Эрик Андерсон
1
Это верно в контексте. Если вам нужно работать продуктивно прямо сейчас или просто проверить код, нормально не иметь глубокого понимания того, как работает git. Уроки в порядке. Так я попал в git. Однако, если или когда вам нужно быть более продвинутым, например, создавать ветки, разветвление, перебазирование и другие более сложные задачи, вы должны знать, как работает git, особенно если ваш фон находится в централизованном управлении версиями.
Фил
3

Этот GoogleTechTalk - фантастическое введение в Git, чтобы узнать, что на самом деле происходит за кулисами, а также изучить язык. Он был предоставлен одним из первых участников Git, и он выступил с этим докладом в 2007 году как способ введения в Git. Если вы посмотрите этот доклад, вы не только узнаете, что такое каждое слово, например репозиторий, вилка, ветвь и т. Д., Но также узнаете, что происходит за кулисами, когда каждое из этих слов создается, объединяется и т. Д.

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

Matt
источник