Git — это система контроля версий, которая отслеживает изменения в файлах компьютерных систем. Это распределенная/децентрализованная система контроля версий. Это позволяет разработчикам работать над одним и тем же проектом в разных сетях. Кроме того, каждый разработчик может иметь полную историю разработок в локальном репозитории кода. Существуют различные хосты кода. Самый популярный хостинг кода — Github (https://github.com/).

В этой статье я сделаю все возможное, чтобы представить, что такое Git, почему это важно и важные команды на основе git.

Что такое Гит?

Git был разработан в 2005 году Линусом Торвальдсом, основателем Linux, очень популярной операционной системы на базе Unix. Он был разработан как замена BitKeeper, который ранее использовался командой разработчиков Linux.

Git был разработан с учетом следующих целей:

  1. Скорость
  2. Простота
  3. Мощная поддержка тысяч ответвлений в разработке кода
  4. Полностью распределенный и децентрализованный
  5. Может эффективно справляться с крупными проектами.

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

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

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

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

Диаграмма ниже может помочь нам понять Git по сравнению с другими VCS.

Файлы, обведенные пунктирной линией, относятся не к этим конкретным файлам, а к предыдущей версии этих файлов.

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

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

Фазы Git

В Git есть 3 этапа, на которых могут находиться файлы: измененный, подготовленный и зафиксированный.

  • Изменено означает, что файлы были отредактированы, но еще не зафиксированы в базе данных.
  • Подготовлено означает, что файл помечен в своей текущей версии для перехода к следующему снимку.
  • Зафиксировано означает, что файлы были сохранены в локальной базе данных.

Таким образом, проект Git состоит из трех важных частей: Рабочее Дерево, Промежуточная Область и strong>Git Каталог.

Базовый рабочий процесс Git выглядит следующим образом:

  1. Изменить файлы в рабочем дереве/каталоге
  2. Подготовьте изменения, которые нужно зафиксировать, добавив эти файлы в область подготовки.
  3. Фиксация файлов в промежуточной области, которая затем постоянно сохраняет их в каталоге Git.

Если файл был сохранен в каталоге, он считается зафиксированным. Если файл был отредактирован, выбран для фиксации, но еще не зафиксирован, он был подготовлен. Если файл не был подготовлен, но был отредактирован, он был изменен.

Мы можем запустить git на самом терминале. Следуйте инструкциям здесь: https://git-scm.com/downloads, чтобы установить git на вашем устройстве.

Команды Git (Mac)

Это команды, которые очень важны для Git.

В большинстве случаев вы можете получить репозиторий Git двумя способами: клонируя существующий репозиторий или инициализируя репозиторий в существующем локальном каталоге.

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

git clone <url>

Например,

git clone https://github.com/libgit2/libgit2

Это создает каталог с именем libgit2, инициализирует каталог .git и извлекает данные для этого репозитория.

Каталог .git содержит необходимые файлы репозитория.

Локальное создание репозитория

Вот шаги для создания репозитория.

  1. Создайте новый репозиторий на github

2. Дайте вашему репозиторию имя, описание и добавьте файл README (позже я объясню, что делает файл README).

3. Это создает новый репозиторий на веб-сайте. Чтобы клонировать его локально на свой локальный компьютер, выберите зеленую кнопку с надписью «Код» и полностью скопируйте ссылку SSH.

4. На локальном компьютере откройте командную строку и создайте новый каталог для своих проектов. Вы можете создать каталог с помощью команды mkdir и войти в него с помощью команды cd. Например:

mkdir projects
cd projects

Теперь вы находитесь в папке проектов.

5. Используйте команду git clone в папке проектов и вставьте SSH, как показано ниже.

git clone [email protected]:sachin121103/test_repo.git

Это клонирует репозиторий на вашу собственную машину.

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

Рабочий процесс Git и важные команды

Вы можете создавать любые файлы внутри каталога по своему усмотрению, будь то .txts, .py или .js. Любой файл работает.

Введите «git status» в свой терминал, чтобы увидеть статус каждого файла в трех частях рабочего процесса Git: рабочий каталог, промежуточная область и репозиторий Git. Если файл красный, это означает, что он еще не был подготовлен.

Чтобы отправить файл в промежуточную область, используйте команду

git add <filename>
This pushes the file to the staging area. 

Теперь, если вы наберете git status, файл станет зеленым.

Чтобы зафиксировать файл в репозитории, используйте команду

git commit -m "Added filename.type"
This commits everything in the staging area, while the sentence is quotes is a message that helps you understand what you have committed

Теперь введите статус git. Он должен показывать «Нечего коммитить, рабочее дерево чистое».

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

Чтобы добавить все файлы в репозиторий, используйте

git add .

Чтобы добавить некоторые файлы в репозиторий, используйте

git add <file1> <file2>

Чтобы отправить файл на github, используйте

git push

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

Подводя итог командам:

git clone [email protected]:USER-NAME/REPOSITORY-NAME.git 
// This clones an online repository to your computer.
git push 
// This pushes the project from your local computer to Github (Requires internet)
git add . or git add <filename>
// This adds files from your machine to your staging area
git commit -m "Message"
// This adds files from the staging area to the local git repository // along with a message about what is being committed and why
git status 
// Lets us know the status of each file in our directory (if it has been staged or stored to the repository or neither)
git log
// Lets us know the commit history of our project

Существует гораздо больше git, особенно с ветками. Более сложные рабочие процессы мы рассмотрим в моей следующей статье.