Git — самая популярная в мире система контроля версий (от англ. Version Control System, VCS). Неудивительно, что навык работы с Git стал обязательным для программистов. В этом пошаговом гайде для новичков вы узнаете, как эффективно использовать Git.
Что такое Git и что такое GitHub
Git — это бесплатная распределенная система контроля версий с открытым исходным кодом, которая обрабатывает изменения кода в программных проектах любого размера. Git позволяет нескольким разработчикам одновременно работать над одним проектом.
В свою очередь GitHub — это компания, которая предлагает облачное хранилище, позволяющее разработчикам хранить свой код и управлять им, а также отслеживать изменения кода и контролировать их. Вы можете использовать Git без GitHub, но вы не можете использовать GitHub без Git.
Пошаговое руководство по Git
Следуйте приведенным ниже инструкциям, чтобы начать использовать Git.
Шаг 1: Установка Git и создание учетной записи GitHub
Первое, что вам нужно сделать — это установить Git и создать учетную запись GitHub. Установка программы будет различаться в зависимости от операционной системы. Скачайте с официального сайта последнюю версию и следуйте предлагаемым инструкциям. Если на вашем компьютере уже установлен Git, обновитесь до последней доступной версии.
После установки создайте бесплатную учетную запись GitHub. Для этого выполните следующие действия.
- Посетите официальную страницу создания учетной записи.
- Придумайте имя пользователя, введите адрес своей электронной почты и придумайте пароль.
- Подпишитесь на рассылку об обновлениях или откажитесь от нее, сняв флажок.
- Подтвердите, что не являетесь роботом.
- Нажмите Create account.
- GitHub отправит код подтверждения на указанную электронную почту. Скопируйте и вставьте его в соответствующее поле.
- При необходимости персонализируйте учетную запись или пропустите этот шаг.
Готово! Вы успешно создали учетную запись на GitHub.
Шаг 2: Создание локального репозитория Git
После установки или обновления Git следующим шагом будет создание локального репозитория. Чтобы создать его, выполните следующие действия:
- Откройте терминал (консоль, Git Bash, командную строку) и перейдите в каталог, в котором на компьютере будет храниться проект. Например.
- Создайте репозиторий в выбранной папке, выполнив команду git init:
cd ~/Desktop
mkdir myproject
cd myproject/
В примере выше выполнен переход на рабочий стол, на котором создана папка myproject и выполнен переход в нее.
git init [имя репозитория]
Шаг 3: Создание нового репозитория на GitHub
GitHub позволяет отслеживать код, когда вы работаете с командой и требуется внести модификации. Чтобы создать новый репозиторий, выполните следующие действия:
- Войдите в систему и перейдите на домашнюю страницу GitHub.
- Найдите опцию New repository под знаком плюса рядом с фотографией профиля в правом верхнем углу.
- Введите имя для вашего репозитория, сделайте краткое описание и выберите параметры конфиденциальности.
- Нажмите кнопку Create repository.
GitHub позволяет добавить существующий репозиторий, который вы создали локально. Чтобы перенести его с компьютера на GitHub, используйте команды:
git remote add origin https://github.com/[ваш логин]/[название репозитория.git]
git push -u origin master
Шаг 4: Добавление файлов в репозиторий
Git понимает, когда вы добавляете или изменяете файлы в папке, содержащей репозиторий, но не отслеживает их, пока соответствующее не указано. Git сохраняет изменения только для файлов, которые отслеживаются, поэтому нужно обозначить их. Чтобы проверить, какие файлы уже отслеживаются Git, выполните команду:
git status
Git уведомляет пользователя, если у него есть какие-либо неотслеживаемые файлы. Если вы хотите, чтобы Git начал отслеживать файл, выполните следующую команду:
git add [название файла]
В примере выше Git поручили отслеживать изменения для файла test.txt. Повторный запуск команды git status показывает, что Git отслеживает указанный файл.
Шаг 5: Отправка файлов в Git
Работа с Git обычно подразумевает добавление всех файлов в индекс (промежуточная область, в которой хранятся изменения файлов на пути от рабочей директории до репозитория), чтобы подготовить их к коммиту (зафиксировать текущую версию). Если вы хотите удалить некоторые файлы из индекса перед коммитом, нужно удалить файлы из Git. Один из способов отменить отправку файлов в Git — выполнить команду git reset:
git reset [название коммита] -- [путь до файла]
Вы также можете использовать команду rm для удаления файлов в Git:
git rm --cached [имя файла]
Шаг 6: Коммит изменений
После добавления указанных файлов в промежуточную среду зафиксируйте изменения с помощью команды git commit. Затем Git сохранит текущую версию файла. Вы можете просмотреть сохраненную версию в любой момент.
git commit -m "краткое содержание коммита"
Добавьте к коммиту сообщение — объясните, какие новые функции добавились или какие изменения были внесены. Коммиты остаются в репозитории, и они редко удаляются, поэтому объяснение того, что вы изменили, помогает другим разработчикам на проекте и вам самим отслеживать работу.
Шаг 7: Отмена коммита
Git позволяет пользователям отменить последний коммит. Однако другие разработчики могли уже скачать обновленный проект, в этом случае удаление приведет к конфликтам. Git предупреждает пользователя о них. Хотя большинство разрешаются автоматически, бывают случаи, когда Git не может устранить проблему.
Используйте команды revert и reset, чтобы отменить изменения и вернуться к предыдущему коммиту:
git revert [хеш коммита]
Хэш — это код, который идентифицирует каждый коммит. Получить его можно с помощью команды:
git log
В примере выше сначала выполнялась команда git log для получения хэша коммита, а затем он был отменен.
Шаг 8: Создание новой ветки
Первая ветка в репозитории git называется master — она является основной в проекте. Создание новой ветки означает создание копии проекта в определенный момент времени. Ветки позволяют внедрять новые функции при разработке, не внося изменения сразу в основную. Распространенным методом создания новой ветки является выполнение команды:
git branch [название новой ветки]
Шаг 9: Переключение между ветками
Наличие нескольких веток в проекте Git дает разработчикам тестовую среду для отслеживания прогресса, не затрагивая рабочую версию продукта. Git позволяет легко переключаться между ветками с помощью команды checkout:
git checkout [название ветки]
Просто пропишите название нужной ветки, к которой хотите получить доступ.
Шаг 10: Переименование локальной или удаленной ветки
В Git вы можете переименовать локальную или удаленную ветку. Для переименования локальной используйте команду:
git branch -m новое название
Переименовать удаленную ветку напрямую невозможно. Нужно сначала удалить старое название, а затем отправить новое имя ветки в удаленный репозиторий.
Шаг 11: Удаление локальной или удаленной ветки
Ветку можно удалить после объединения с основной, или если она была повреждена. Удалять можно как локальные, так и удаленные ветки.
Удаление локальной ветки не влияет на ветку, хранящуюся в облаке. Чтобы удалить локальную ветку, выполните команду:
git branch -d [название ветки]
Для удаления облачной ветки используйте команду:
git push [название проекта] --delete [название ветки]
Шаг 12: Установка Upstream Branch (локальная ветка слежения)
Отправка через upstream в Git означает, что вы отправляете файлы обратно владельцу репозитория. Используя команду git set upstream, вы можете выбрать направление для текущей локальной ветки. Команда также позволяет изменить удаленную ветку по умолчанию.
Шаг 13: Удаление удаленного репозитория
С помощью git remote можно подключиться к репозиторию, размещенному на удаленном сервере — GitHub, BitBucket, GitLab или другом. Однако со временем удаленный репозиторий может переместиться на другой хост, или член команды может прекратить работу над проектом. В этом случае удаленное подключение больше не требуется.
Есть несколько способов удалить его. Чаще всего используется команда:
git remote remove [удаленное название]
В следующем примере при запуске git remote -v отображаются доступные подключения origin и test-remote. После удаления test-remote и повторного запуска git remote -v единственным доступным подключением является origin.
Шаг 14: Объединение веток
Git merge позволяет объединить несколько изменений в рамках одного коммита. Можно объединить две ветки, собрав независимые версии в одну. После слияния двух веток Git обновляет текущую, отображая изменения, однако целевая ветка остается не затронутой. Чтобы удалить устаревшую ветку, нужно выполнить команду git branch -d.
Например, вы хотите объединить ветку с новым функционалом с основной. Для этого нужно выполнить несколько шагов.
- Выполните команду git status, чтобы убедиться, что выбрана основная ветка — master. Если это не так, выполните git checkout master, чтобы переключиться на главную ветку.
- Выполните команду git fetch, чтобы отследить последние удаленные коммиты, и git pull, чтобы убедиться, что в ветке есть последние обновления.
- Запустите git merge X, где X — это название ветви, которую вы хотите объединить с основной.
Шаг 15: Создание запроса на изменение кода
Запрос на изменение кода или pull request информирует владельца репозитория, что он должен просмотреть изменения, внесенные в его код. Затем владелец может одобрить запрос и объединить ветки.
Если вы являетесь совладельцем или владельцем репозитория, вам не нужно создавать запросы на изменение кода. Тем не менее, вы можете сделать это, чтобы отслеживать обновления функционала по истории.
Для этого гайда был создан локальный файл readme. Для него будет выполнен pull request, чтобы подробно описать процесс. Нужно выполнить следующие действия.
- В Git Bash создайте пустой файл readme, выполнив команду touch readme.md.
- Создайте новую ветку, в которой файл будет модифицироваться, и переключитесь на нее с помощью команды:
- Откройте файл readme в текстовом редакторе и добавьте текст. В этом примере используется текстовый редактор Nano для изменения файла в окне командной строки. Выполните команду nano readme.md.
- После сохранения файла перенесите его в индекс с помощью git add readme.md.
- Создайте коммит с помощью команды:
- Отправьте изменения на GitHub:
- Зайдите на свою страницу на GitHub. Теперь в вашем репозитории есть опция Create pull request с именем ветки, которая была создана в командной строке. Нажмите кнопку Compare & pull request.
- GitHub сообщит, можете ли вы объединить ветки и применить изменения. При необходимости добавьте комментарий к вашему запросу и нажмите Create pull request.
git checkout -b create-readme-file
git commit -m "Добавлен файл readme"
git push origin create-readme-file
Теперь владелец репозитория, в данном случае вы, можете оценить изменения и принять или отклонить запрос на слияние веток. Запросы расположены во вкладке Pull requests на GitHub. Когда вы объедините ветки, удалить устаревшую версию можно по кнопке Delete branch. Это поможет поддерживать чистоту репозитория.
Шаг 16: Синхронизация изменения на GitHub и локально
Когда вы объединяете ветки на GitHub, они не подгружаются автоматически в локальный репозитории. Вы должны скачать обновления. Для синхронизации локального репозитория с удаленным выполните команду:
git pull origin master
Команда обновляет локальный репозиторий и сообщает о внесенных на GitHub изменениях. В примере ниже выполняется переключение на главную ветку, после чего Git сам предупреждает, что нужно обновиться.
Коротко о главном
Теперь вы знаете основные и часть продвинутых функции Git. Не бойтесь тестировать их, чтобы убедиться, что поняли, как они работают.
- Git — это система контроля версий, которая позволяет нескольким программистам работать над продуктом одновременно.
- С ее помощью можно отслеживать разные версии продукта и обновлять его, добавляя новые функции.
- Git позволяет работать как с локальными, так и с удаленными репозиториями. Все изменения в коде отслеживаются, а при наличии ошибок можно откатиться до предыдущей версии.
Комментарии