Подтвердить что ты не робот

Терминология, используемая Git

Кажется, мне нужно научиться использовать git. Что, вероятно, хорошо (TM). Однако, читая онлайн-руководства и man-страницы, я просто не могу понять свою терминологию. Все всегда определяется в терминах самих себя или других необъяснимых терминов (сделайте "man git", и вы понимаете, что я имею в виду).

Итак, существует ли более DAG-подобная структура определений терминов, включая некоторые из следующих (все взяты из git man-страниц (ы)!). Возможно, используя файловую систему в качестве отправной точки, и не предполагая, что читатель хорошо разбирается в svn (чего я не знаю).

  • репо
  • репозиторий
  • a git
  • "git"
  • Индекс
  • клон
  • совершить
  • филиал
  • дерево
  • вверх
  • голова
  • ГОЛОВКА
  • версия
  • тег
  • Архив
  • Патч
  • представление
  • ревизия
  • копить
  • Архив
  • объект
  • Модуль
  • подмодуль
  • refspec
  • история

В то время как я могу найти объяснения для некоторых, они обычно имеют отношение к другому. Также некоторые другие термины, которые я знаю из других контекстов (например, UNIX diff). Однако некоторые другие, я думал, что знаю...

Я понял, что есть репозитории (похожие на gits? и/или деревья? upstream?), которые вы копируете (clone? branch?), чтобы физически загружать файлы на ваш жесткий диск. Тогда есть ветки (похожие на changeets?), Теги и коммиты (похожие на патчи?), Но их различие не ясен. Какие файлы вносят изменения? Что делает мои файлы локальными и что может (не дай бог) представить мой код для интернетов?

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

//T, кусая свой язык, чтобы контролировать свое разочарование...

4b9b3361

Ответ 1

Вот попытка заполнить ваш глоссарий (с верхней части головы, пытаясь использовать мои собственные слова):

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

  • a git, git ": никогда не слышал, извините." git", вероятно, описывает само программное обеспечение, но я не уверен

  • index, промежуточная область:. Это "кеш" между вашей рабочей сетью и вашим репозиторием. Вы можете добавлять изменения в индекс и строить свой следующий шаг шаг за шагом. Когда ваш индексный контент соответствует вашим любимым, вы можете создать фиксацию из него. Также используется для хранения информации во время неудачных слияний (ваша сторона, их сторона и текущее состояние)

  • clone: ​​ Клон репозитория ( "просто другой репозиторий" ) или действие ( "клонировать репозиторий (создает новый клон)" )

  • commit: Состояние вашего проекта в определенное время. Содержит указатель на его родительский фиксатор (в случае слияния: несколько родителей) и указатель на структуру каталогов в этот момент времени.

  • Отрасль:. Разная линия разработки. Ветвь в git - это просто "метка", которая указывает на фиксацию. Вы можете получить полную историю через родительские указатели. По умолчанию ветка является локальной для вашего репозитория.

  • дерево: В принципе, это каталог. Это всего лишь список файлов (blobs) и подкаталогов (деревьев). (Список также может содержать фиксации в случае использования подмодулей, но это расширенная тема)

  • upstream: После клонирования репозитория вы часто называете это "оригинальное" хранилище "вверх по течению". В git он псевдоним origin

  • голова: Верхняя фиксация ветки (фиксация метки указывает на)

  • HEAD: Символьное имя для описания зафиксированного в настоящий момент фиксации. Часто верхняя фиксация

  • версия: Возможно, это будет то же самое, что и фиксация. Также может означать выпущенную версию вашего проекта.

  • tag: Описательное имя, присвоенное одному из ваших коммитов (или деревьев или капли). Может также содержать сообщение (например, журнал изменений). Теги могут быть криптографически подписаны с GPG.

  • архив: Простой архив (.tar,.zip), ничего особенного wrt git.

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

  • подчинение: не знаю. Отправка патча в проект может быть?

  • changeet: Синоним для "commit"

  • stash: git позволяет вам "сбрасывать" изменения. Это дает вам чистое рабочее дерево без каких-либо изменений. Позже их можно "выскочить", чтобы их вернули. Это может быть спасателем жизни, если вам нужно временно работать с несвязанным изменением (например, исправлением ошибки времени по времени)

  • объект: может быть одним из commit, tree, blob, tag. Объект связал свой хэш SHA1, на который он ссылается (фиксация с id deadbeaf, дерево decaf). Хэш идентичен между всеми репозиториями, которые используют один и тот же объект. Он также гарантирует целостность репозитория: вы не можете изменять прошлые коммиты, не меняя хэши всех дочерних коммитов.

  • (module,) subodule: Репозиторий, включенный в другой репозиторий (например, внешняя библиотека). Продвинутый материал.

  • revspec: Обозначение revspec (или выражение revparse) описывает определенный объект git или набор коммитов через то, что называется расширенным синтаксисом SHA1 (например, HEAD, master~4^2, origin/master..HEAD, deadbeaf^!,...)

  • refspec:. Параметр refspec описывает сопоставление между удаленными и локальными ссылками во время операций Fetch или Push

  • история: Описывает все предковские коммиты до фиксации, возвращаясь к первой фиксации.


Вещи, которые вы не упомянули, но, вероятно, хорошо знать:

Все, что вы делаете, является локальным для вашего репозитория (либо создается git init, либо git clone git://url.com/another/repo.git). В git имеется несколько команд, которые взаимодействуют с другими репозиториями (a.k.a. interwebz), включая clone, fetch, pull, push.

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

Один репозиторий может содержать несколько ветвей, но не нужно. Разница по умолчанию в git называется master. Вы можете создать столько ветвей, сколько хотите, слияние - это кусок пирога с git. Филиалы являются локальными, пока вы не запустите git push origin <branch>.

A commit описывает полное состояние проекта. Эти состояния можно сравнивать друг с другом, что создает "diff" (git diff origin/master master= см. Различия между origin/master и master)

Git довольно эффективен, когда дело доходит до подготовки ваших коммитов. Ключевым элементом здесь является "индекс" (или "промежуточная область" ). Вы можете добавить отдельные изменения в индекс (используя git add), пока не увидите, что индекс выглядит хорошо. git commit запускает ваш текстовый редактор, и вам необходимо предоставить сообщение о фиксации (почему и как вы это сделали); после ввода вашего сообщения о фиксации git создаст новую фиксацию - содержащую содержимое индекса - поверх предыдущего фиксации (родительский указатель - SHA1 предыдущего фиксации).

Ответ 2

Git поставляется с документацией точно для того, что вы ищете.

$ git help glossary

Ответ 3

Я нашел эту (бесплатную) книгу очень полезной при обучении использованию git: http://progit.org/. Книга существует и в печатной форме.

Я думаю, что самый быстрый способ узнать git - это, вероятно, взять книгу или учебник, в котором рассказывается об основных понятиях и терминах.

Ответ 4

Другим хорошим ресурсом для обучения Git является Edgecase Git Погружение. Попытка узнать Git через страницы руководства, вероятно, очень сложно, есть короткая, крутая кривая обучения, которую нужно преодолеть в первую очередь. Сначала вам нужно познакомиться с концепцией DCVS (Distributed Version Control System).

Progit, как рекомендовано @fulhack, тоже очень хорошо.

Я также могу настоятельно рекомендовать Think Like A Git. Объяснение перебассы здесь стоит своего веса в золоте.

Ответ 5

Лучшее, что я нашел для понимания git, git Притча

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

Ответ 6

Мне кажется, вам может понравиться эта статья: Git для компьютерных ученых

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