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

Каковы основные понятия git, github, fork & branch. Как git сравнивается с SVN?

Я использую Github на какое-то время, но я немного запутался в некоторых ключевых понятиях за Git.

Мой опыт работы с VCS начался с Source Safe, а затем перешел в SVN и TFS. Я думаю, что я застрял в старом образе системы CVS, например SVN и TFS.

Что считается серверной и клиентской стороной в Git. Из того, что я понял, между ними нет четкого различия.

В техническом смысле, что означает вилка. Это "тип" ветки?

Ват имеет среднее значение в git? Это то же самое, что и в SVN?

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

4b9b3361

Ответ 1

Здесь, как понимать Git:

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

По своей сути Git - это всего лишь способ сохранить и восстановить моментальные снимки. Каждый снимок имеет "ID" (SHA1) и может содержать один или несколько "refs" (указателей). Отделение? Просто более дружелюбное имя для конкретного моментального снимка. Метки? То же самое. ГЛАВА? Это просто "местоимение" для текущего моментального снимка. Удобно, что эти снимки имеют описание того, что изменилось - это описание является сообщением фиксации.

Ответ 2

Git - система управления версиями DVCS (распределенная)

Git (локально) имеет каталог (.git/) в корне проекта, к которому вы прикрепляете свои файлы.

Git - это система управления версиями DVCS (Distributed), которая позволяет сохранять копии ( "версии" ) файлов часто с возможностью объединения работы, выполненной более чем одним человеком, и вы также имеют возможность работать в автономном режиме.

Git отличается от более традиционных CVS (систем управления версиями кода), таких как SVN (Subversion) или CVS, которые имеют ветки, но не "локальная и удаленная" концепция (ваши фиксации находятся непосредственно на пульте дистанционного управления). С помощью git вы сначала передаете свой локальный репозиторий, а затем нажимаете эти изменения на удаленный. Это способствует более частым фиксации и работе, выполняемой в небольших кусках. Он также поддерживает автономную работу намного лучше, поскольку вы можете совершать в автономном режиме, а затем синхронизировать и тянуть/нажимать, когда следующий онлайн.

Git сохраняет каждое изменение в файле, сохраняя весь файл. Это отличается от svn в этом отношении, и вы можете перейти к любой отдельной версии без "воссоздания" ее через изменения дельты.

Git не блокирует файлы и требует эксклюзивной блокировки для редактирования (на ум приходят более старые системы, такие как pvcs). На самом деле это потрясающая работа по объединению смены файла (внутри одного и того же файла!) Вместе во время вытаскиваний или извлечения. Единственный раз, когда вам нужно выполнить ручное изменение, - это два изменения, которые связаны с одной строкой кода.


Филиалы

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

Github

github (удаленный) - это удаленный источник, который вы обычно нажимаете и вытаскиваете те зафиксированные изменения, если у вас есть (или добавлены) такой репозиторий.
Так что локальные и удаленные на самом деле довольно разные.

Когда вы 'fork', i.e нажмите на - enter image description here, скажем, на github, вы создаете копию кода в своей учетной записи github. Это может быть немного тонким в первый раз, когда вы это сделаете, поэтому следите за тем, чтобы вы посмотрели, чей репозиторий содержит базу кода, указанную ниже: либо первоначальный владелец, либо "разветвленный", а вы, например, enter image description here

После того, как у вас есть локальная копия, вы можете вносить изменения по своему усмотрению (потянув и нажав их на локальный компьютер). Когда вы закончите, вы отправляете "запрос на получение" поверх оригинального владельца/администратора репозитория (звучит фантастически, но на самом деле вы просто нажимаете на это: - enter image description here), и они "тянут" его.

Клонирование

Более общим для совместной работы с кодом является "клонирование" репозитория (щелкните значок "копия" на главном экране репозитория). Затем локально наберите git clone [paste]. Это будет локально настроено, и вы можете нажать и вытащить непосредственно в общую папку github.

Визуализация

У меня нет визуализации основных понятий, но если вы хотите увидеть, как работают изменения, вы не можете победить визуальный инструмент gitg (gitx для mac) с gui, который я называю "метро" map '(особенно Лондонское метро), отлично подходит для того, чтобы показать, кто что сделал, как все меняется, расходится и сливается и т.д. Вы также можете использовать его для фиксации и управления локальными изменениями...

enter image description here

Ответ 3

В отличие от CVS и SVN, основанных на файлах, Git основан на фиксации. Коммиты живут в репозитории как дерево коммитов. В репозиторий Git есть 3 основных раздела, рабочий каталог - сцена и каталог репозитория.

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

Вилка - это просто клон или копия другого репозитория. Изменения, внесенные вами в копию репозитория, не будут влиять на репозиторий, который был раздвоен (клон). Чтобы применить ваши изменения в исходном репозитории, вам нужно "нажать" их или у владельца репозитория "вытащить" новые новые коммиты, которые вы добавили. Аналогично другим вилка вилка (т.е. Сделайте копию своей копии). И любые изменения в их репозитории не повлияют на ваш репозиторий, если вы не потянете эти изменения.

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

Я очень рекомендую ProGit Book, чтобы помочь вам лучше узнать, как и что Git.

Ответ 5

Tinkertoys, идеальный инструмент моделирования для ориентированного ациклического графика Node

Git Для возрастов 4 и выше - забавный разговор на Git и предоставляет удивительно полезные визуализации с помощью Tinkertoys.