Наши партнеры

UnixForum





Библиотека сайта rus-linux.net

Как быстро начать работу с Git

Оригинал: How to Quickly Get Started with Git
Автор: Tobias Gunther
Дата публикации: Jul 26 2013
Перевод: Н.Ромоданов
Дата перевода: январь 2015 г.

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

Однако помимо того, что это просто нужно знать, есть и ряд причин, почему вам следует пользоваться системой контроля версий (version control system - VCS).

Почему вам следует пользоваться системой контроля версий

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

С помощью системы контроля версий можно также аккуратно объединять изменения, сделанные разными разработчиками, в одну общую версии. В номенклатуре контроля версий, это называется слиянием (merging). В результате одновременная работа на одними и теми же файлами становится простой и безопасной.

Но даже если вы работаете в одиночку, система контроля версий все еще даст много преимуществ

Например, контроль версий делает позволяет гораздо проще сохранять и восстанавливать версии вашего проекта.

Без системы контроля версий вы, вероятно, сохраняете версии файлов и папок с помощью своей собственной схемы именования, результатом чего становится появление ужасного и неуправляемого количества файлов и каталогов с такими именами файлов, как, например, website-relaunch-homepage_2013-10-11_v3_JenniferSmith.html.

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

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

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

Почему вы должны пользоваться Git

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

Тем не менее, есть ряд причин, почему нужно выбирать именно Git.

Git, например, уже сейчас является, вероятно, самой популярной системой контроля версий с открытым исходным кодом там.

Как децентрализованная система контроля версий, Git обладает следующими преимуществами:

  • Невероятно быстрая скорость работы
  • Возможность работать в автономном режиме
  • Преимущество наличия на вашем компьютере полной копии проекта (в том числе и истории проекта)

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

Другие понятия, такие как область подготовки (Staging Area) или накопление изменений (Stash), также способствуют тому, чтобы Git стал постоянной и очень полезной частью вашего инструментария, применяемого при кодировании.

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

Git уже стал мейнстримом. Качества Git и его долголетие доказано благодаря его использованию в таких проектах, как ядро Linux, Ruby On Rails, JQuery и многих других крупных проектах с открытым исходным кодом, а также его использованию крупными компаниями (такими как Google, Facebook и Twitter).

Установка Git

Установка Git стала в последнее время невероятно простой (вам повезло!).

Есть инсталляторы для Mac и Windows, которые запускаются одним щелчком мыши.

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

Кроме того, прежде, чем мы начнем углубляться в Git, полезно иметь под рукой нашу бесплатную шпаргалку по Git (можно воспользоваться переведенным и слегка измененным ее вариантом: pdf-версия, то же самое в odt-файле).

Если под рукой шпаргалка, то вам не потребуется наизусть помнить все команды Git; она позволит вам отклоняться от нашего описания и исследовать Git по своему усмотрению.

После того, как установка Git будет завершена, нужно запустить командную строку.

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

Чтобы задать имя и адрес электронной почты, наберите две следующие команды Git, но измените их так, чтобы были указаны ваше имя и адрес электронной почты:

$ git config --global user.name "Your Name"
$ git config --global user.email "your@email.org" 

Начинаем пользоваться Git и вашим первым репозиторием

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

Клонирование существующего репозитория

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

Что такое репозиторий? Репозиторий — это всего лишь причудливое название набора файлов и каталогов, используемых в проекте.

Например, посмотрите на репозиторий Jquery, находящийся на GitHub:

Чтобы получить копию репозитория проекта на локальном компьютере, используйте команду git clone, например, следующим образом:

$ git clone https://github.com/gittower/git-crash-course.git

Указанная выше команда скачает на ваш компьютер репозиторий, расположенный по ссылке https://github.com/gittower/git-crash-course.git.

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

Создание нового репозитория

Другая возможность позволяет начать работу с контролем версий в случае, когда у вас уже есть проект, в котором в настоящее время еще не используется контроль версий.

Перейдите в командной строке в корневой каталог проекта, а затем используйте команду git init для того, чтобы начать в этом проекте использовать контроль версий:

$ git init

Проверка наличия каталога .git

Вам может быть интересно, где Git хранит все данные о вашем репозитории.

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

Вы можете убедиться в этом, выполнив Unix-команду ls следующим образом:

ls -la

Достаточно знать, что этот каталог существует. Внутри этого волшебного каталога вы не должны ни к чему прикасаться.

Работа с вашими файлами

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

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

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

Делаем коммиты

И только когда вы почувствуете, что добились чего-то важного, вы снова должны обратиться к системе контроля версии.

В тот момент, когда вы в вашей работе достигли важного этапа, потребуется все ваши изменения зафиксировать в виде коммита (commit).

Коммит просто означает, что мы переносим в ваш репозиторий все изменения, внесенные в файлы.

Рассмотрим изменения, которые мы сделали

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

Вы можете увидеть все ваши изменения с помощью команды git status:

$ git status

После того, как будет выполнена команда git status, Git выдаст список всех изменений, сделанных с момента вашего последнего коммита и которые сгруппированы по различным категориям.

Ниже приведен результат, выданный командой git status для нашего рабочего примера:

Вам, возможно, окажется незнакомой пара терминов, которые вы обнаружите в приведенном выше результате:

  • Неотслеживаемые файлы (Untracked files): в Git файлы называются неотслеживаемыми, когда для них не используется контроль версий. В большинстве случаев, это просто новые файлы, которые вы создали перед тем, как закоммитить их в репозитории.
  • Файлы, подготовленные/неподготовленные для коммита (Staged/Unstaged files): Все это просто обуславливается тем, что изменение файла не означает, что он автоматически включается в следующий коммит. Чтобы включить изменения в коммит, вы должны явно сказать Git, что это нужно сделать. Это основная особенность, которой Git отличается от других систем контроля версий; но в то же время это и главное преимущество, поскольку позволяет очень точно добавлять в коммит только необходимые изменения. Изменения, которые были отмечены для следующего коммита, называются подготовленными (staged), в то время как изменения, которые должны быть просто оставлены в качестве локальных изменений, называются неподготовленными для коммита (unstaged).

Подготовка выполнения коммита

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

Как вы должны подготовить свои изменения?

  • Используйте команду git add для измененных файлов или тех файлов, изменения которых еще не отслеживалсь.
  • Используйте команду git rm для подтверждения удаления файла.
  • В тех случаях, когда вы хотите подготовить для коммита все сделанные вами изменения, можно использовать команду git add -A.

В нашем рабочем примере, приведенном выше, мы подготавливаем файл index.html (который был изменен), добавляем файл new-page.html (который ранее не отслеживался), и два измененных файла в каталоге css:

$ git add index.html new-page.html css/*

Ниже показана команда, подтверждающая, что вы хотите удалить файл error.html:

$ git rm error.html

Если вы посмотрите на результат работы команды git status для нашего рабочего примера, приведенного выше, то увидите, что был изменен файл imprint.html. Я сознательно не подготовил его с помощью команды git add, поскольку я хочу оставить его для следующего коммита.

Просмотр перед выполнением коммита

Опять же, я предлагаю перед тем, как, наконец, сделать коммит, посмотреть, что скажет команда git status.

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

В разделе Changes to be committed (Изменения, которые будут закомитчены) вам показано, что вы подготовили для коммита.

Делаем коммит

Для того, чтобы сохранить этот набор изменений с помощью коммита, вам следует использовать команды git commit с сообщением, которое должно кратко описывать делаемые изменения и указывается сразу после параметра -m; оно подскажет вам и другим о том, что конкретно было изменено с помощью данного коммита:

$ git commit -m "Implement the new login box"

Прим.пер.: В сообщении "Implement the new login box" указывается, что "Реализован новый блок login". Теоретически можно, если у вас есть соответствующие настройки командной строки, записывать сообщения в кириллице, но, поскольку есть шанс, что ваш проект может заинтересовать тех, у которых нет таких настроек, желательно такие сообщения записывать латиницей на английском языке или хотя бы латиницей на транслите.

Инспектируем историю коммитов

Если вы хотите посмотреть, что происходило до сих пор с проектом, вы можете получить эту информацию с помощью команды git log:

$ git log

Эта команда Git выдает в хронологическом порядке все сделанные коммиты.

Следующий шаг к мастерству с Git

Поздравляем! На данный момент вы уже разобрались с наиболее важными понятиями управления версиями и Git.

Чтобы ваши знания о Git стали на уровень выше, я предлагаю следующие.

Используйте для Git графический интерфейс

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

Пользователи Windows, возможно, захотят взглянуть на приложение Tortoise Git, а пользователи Mac OS могут попробовать программу Tower, которая была создана для того, чтобы использование Git стало проще.

Ресурсы для изучения Git

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

Чтобы улучшить свои знания в Git, воспользуйтесь следующими ресурсами:

Заключение

Контроль версий стал неотъемлемой частью в рабочем процессе современного разработчика.

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