Git для новичков (часть 1) / Хабр
Часть 2
Что такое Git и зачем он нужен?
Git — это консольная утилита, для отслеживания и ведения истории изменения файлов, в вашем проекте. Чаще всего его используют для кода, но можно и для других файлов. Например, для картинок — полезно для дизайнеров.
С помощью Git-a вы можете откатить свой проект до более старой версии, сравнивать, анализировать или сливать свои изменения в репозиторий.
Репозиторием называют хранилище вашего кода и историю его изменений. Git работает локально и все ваши репозитории хранятся в определенных папках на жестком диске.
Так же ваши репозитории можно хранить и в интернете. Обычно для этого используют три сервиса:
GitHub
Bitbucket
GitLab
Каждая точка сохранения вашего проекта носит название коммит (commit). У каждого commit-a есть hash (уникальный id) и комментарий. Из таких commit-ов собирается ветка. Ветка — это история изменений. У каждой ветки есть свое название. Репозиторий может содержать в себе несколько веток, которые создаются из других веток или вливаются в них.
Как работает
Если посмотреть на картинку, то становиться чуть проще с пониманием. Каждый кружок, это commit. Стрелочки показывают направление, из какого commit сделан следующий. Например C3
сделан из С2
и т. д. Все эти commit находятся в ветке под названием main
. Это основная ветка, чаще всего ее называют master
. Прямоугольник main*
показывает в каком commit мы сейчас находимся, проще говоря указатель.
В итоге получается очень простой граф, состоящий из одной ветки (main
) и четырех commit. Все это может превратиться в более сложный граф, состоящий из нескольких веток, которые сливаются в одну.
Об этом мы поговорим в следующих статьях. Для начала разберем работу с одной веткой.
Установка
Основой интерфейс для работы с Git-ом является консоль/терминал. Это не совсем удобно, тем более для новичков, поэтому предлагаю поставить дополнительную программу с графическим интерфейсом (кнопками, графиками и т.д.). О них я расскажу чуть позже.
Но для начала, все же установим сам Git.
Windows. Проходим по этой ссылке, выбираем под вашу ОС (32 или 64 битную), скачиваем и устанавливаем.
Для Mac OS. Открываем терминал и пишем:
#Если установлен Homebrew brew install git #Если нет, то вводим эту команду. git --version #После этого появится окно, где предложит установить Command Line Tools (CLT). #Соглашаемся и ждем установки. Вместе с CLT установиться и git
# Debian или Ubuntu sudo apt install git # CentOS sudo yum install git
Настройка
Вы установили себе Git и можете им пользоваться. Давайте теперь его настроим, чтобы когда вы создавали commit, указывался автор, кто его создал.
Открываем терминал (Linux и MacOS) или консоль (Windows) и вводим следующие команды.
#Установим имя для вашего пользователя #Вместо <ваше_имя> можно ввести, например, Grisha_Popov #Кавычки оставляем git config --global user. name "<ваше_имя>" #Теперь установим email. Принцип тот же. git config --global user.email "<адрес_почты@email.com>"
Создание репозитория
Теперь вы готовы к работе с Git локально на компьютере.
Создадим наш первый репозиторий. Для этого пройдите в папку вашего проекта.
#Для Linux и MacOS путь может выглядеть так /Users/UserName/Desktop/MyProject #Для Windows например С://MyProject cd <путь_к_вашему_проекту> #Инициализация/создание репозитория git init
Теперь Git отслеживает изменения файлов вашего проекта. Но, так как вы только создали репозиторий в нем нет вашего кода. Для этого необходимо создать commit.
#Добавим все файлы проекта в нам будующий commit git add . #Или так git add --all #Если хотим добавить конкретный файл то можно так git add <имя_файла> #Теперь создаем commit. Обязательно указываем комментарий. #И не забываем про кавычки git commit -m "<комментарий>"
Отлично. Вы создали свой первый репозиторий и заполнили его первым commit.
Процесс работы с Git
Не стоит после каждого изменения файла делать commit. Чаще всего их создают, когда:
Создан новый функционал
Добавлен новый блок на верстке
Исправлены ошибки по коду
Вы завершили рабочий день и хотите сохранить код
Это поможет держать вашу ветки в чистоте и порядке. Тем самым, вы будете видеть историю изменений по каждому нововведению в вашем проекте, а не по каждому файлу.
Визуальный интерфейс
Как я и говорил ранее, существуют дополнительные программы для облегчения использования Git. Некоторые текстовые редакторы или полноценные среды разработки уже включают в себя вспомогательный интерфейс для работы с ним.
Но существуют и отдельные программы по работе с Git. Могу посоветовать эти:
GitHub Desktop
Sourcetree
GitKraken
Я не буду рассказывать как они работают. Предлагаю разобраться с этим самостоятельно.
Создаем свой первый проект и выкладываем на GitHub
Давайте разберемся как это сделать, с помощью среды разработки Visual Studio Code (VS Code).
Перед началом предлагаю зарегистрироваться на GitHub.
Создайте папку, где будет храниться ваш проект. Если такая папка уже есть, то создавать новую не надо.
После открываем VS Code .
Установите себе дополнительно анализаторы кода для JavaScript и PHP
Откройте вашу папку, которую создали ранее
После этого у вас появится вот такой интерфейс
Здесь будут располагаться все файлы вашего проекта
Здесь можно работать с Git-ом
Кнопка для создания нового файла
Кнопка для создания новой папки
Если ваш проект пустой, как у меня, то создайте новый файл и назовите его
index.html
. После этого откроется окно редактирование этого файла. Напишите в нем!
и нажмите кнопкуTab
. Автоматически должен сгенерироваться скелет пустой HTML страницы. Не забудьте нажатьctrl+s
чтобы файл сохранился.
Давайте теперь перейдем во вкладу для работы с Git-ом.
Откроется вот такое окно:
Кнопка для публикации нашего проекта на GitHub
После нажатия на кнопку
1
, появится всплывающее окно. Нужно выбрать второй вариант или там где присутствует фраза...public repository
Если вы хотите создать локальный репозиторий и опубликовать код в другой сервис, то необходимо нажать на кнопку
Initialize Repository
. После этого, вручную выбрать сервис куда публиковать.
После того, как выбрали «Опубликовать на GitHub публичный репозиторий» (пункт 2), программа предложит вам выбрать файлы, которые будут входить в первый commit. Проставляем галочки у всех файлов, если не проставлены и жмем ОК
. Вас перекинет на сайт GitHub, где нужно будет подтвердить вход в аккаунт.
Вы создали и опубликовали репозиторий на GitHub.
Теперь сделаем изменения в коде и попробуем их снова опубликовать. Перейдите во вкладку с файлами, отредактируйте какой-нибудь файл, не забудьте нажать crtl+s
(Windows) или cmd+s
(MacOS), чтобы сохранить файл. Вернитесь обратно во вкладу управления Git.
Если посмотреть на значок вкладки Git, то можно увидеть цифру 1 в синем кружке. Она означает, сколько файлов у нас изменено и незакоммичено. Давайте его закоммитим и опубликуем:
Кнопка для просмотра изменений в файле. Необязательно нажимать, указал для справки
Добавляем наш файл для будущего commit
Пишем комментарий
Создаем commit
Отправляем наш commit в GitHub
Поздравляю, вы научились создавать commit и отправлять его в GitHub!
Итог
Это первая вводная статья по утилите Git. Здесь мы рассмотрели:
Как его устанавливать
Как его настраивать
Как инициализировать репозиторий и создать commit через консоль
Как на примере VS Code, опубликовать свой код на GitHub
Забегая вперед, советую вам погуглить, как работают следующие команды:
git help # справка по всем командам git clone git status git branch git checkout git merge git remote git fetch git push git pull
P. S. Для облегчения обучения, оставлю вам ссылку на бесплатный тренажер по Git.
https://learngitbranching.js.org/
В телеграмм канале Step by Step , я публикую еще больше материала и провожу обучающие стримы, для всех желающих.
Работа с Git через консоль — Блог HTML Academy
Другие материалы по Git
- Введение в системы контроля версий
- Шпаргалка по Git. Решение основных проблем
- Полезные команды для работы с Git
Задача: форкнуть репозиторий в GitHub, создать ветку и работать с кодом.
Сразу появляется много вопросов — что такое GitHub, какие для этого нужны команды, зачем, а главное, как всем этим пользоваться? Давайте разберёмся.
Как тестировать сайты
Когда мы пишем код, мы постоянно туда что-то добавляем, удаляем, и иногда всё может ломаться. Поэтому перед любыми изменениями стоит сделать копию проекта. Если собирать проекты в папки с именами проект1
, проект1_финал
и проект2_доделка
, вы быстро запутаетесь и точно что-нибудь потеряете. Поэтому для работы с кодом используют системы контроля версий.
Система контроля версий — программа, которая хранит разные версии одного документа, позволяет переключаться между ними, вносить и отслеживать изменения. Таких систем много и все они работают по принципу компьютерной игры, где вы можете вернуться к месту сохранения, если что-то пошло не так.
Git — самая популярная система контроля версий. С Git можно работать через командную строку (или терминал). В каждой системе своя встроенная программа для работы с командной строкой. В Windows это PowerShell или cmd, а в Linux или macOS — Terminal.
Нужно ли покупать новый компьютер для вёрстки
Вместо встроенных программ можно использовать любую другую — например, Git Bash в Windows или iTerm2 для macOS.
Как работает терминал: мы вводим команду и получаем ответ компьютера — или всё получилось, или где-то ошибка, или нужно ввести что-то ещё — например, пароль. Поэтому большая часть этой инструкции состоит из команд для терминала. Сначала будет непривычно, но вам понравится.
Но давайте по порядку — установим Git на компьютер.
Устанавливаем и настраиваем Git
Windows. Скачайте Git для Windows, запустите exe-файл, следуйте инструкциям.
macOS. Скачайте Git для macOS и запустите dmg-файл. Если он не запускается, зайдите в Системные настройки — Безопасность и нажмите кнопку Open anyway (Всё равно открыть).
Linux. Установите Git через встроенный менеджер пакетов. Если у вас Ubuntu, используйте команду sudo apt-get install git
. Команды для других дистрибутивов можно посмотреть здесь.
Как проверить, что Git установился
Откройте терминал и введите команду
git --version
Если Git установлен, то вы увидите номер версии, например, 2.35.1
.
Настраиваем Git
Теперь нужно ввести имя и адрес электронной почты, чтобы ваши действия в Git были подписаны, а ещё для привязки к GitHub.
Добавить имя (введите его внутри кавычек):
git config --global user.name "ваше имя"
Добавить электронную почту (замените email@example. com на вашу почту):
git config --global user.email [email protected]
Опция --global
значит, что имя и почта будут использоваться для всех ваших действий в Git. Если вы хотите менять эту информацию для разных проектов, то вводите эти же команды, только без опции --global
.
Регистрируемся на GitHub
GitHub (или Гитхаб) — веб-сервис на основе Git, который помогает совместно разрабатывать IT-проекты. На Гитхабе разработчики публикуют свой и редактируют чужой код, комментируют проекты и следят за новостями других пользователей.
Профиль на Гитхабе и все проекты в нём — ваше публичное портфолио разработчика, поэтому нужно завести профиль, если у вас его ещё нет.
- Зайдите на сайт https://github. com и нажмите кнопку Sign up.
- Введите имя пользователя (понадобится в дальнейшей работе), адрес электронной почты (такой же, как при настройке Git) и пароль.
- На почту придёт код активации — введите на сайте.
- Появится окно с выбором тарифного плана. Если вы пользуетесь Гитхабом для учёбы, то укажите, что профиль нужен только для вас и вы студент.
- Опросы и выбор интересов можно пропустить.
На этом всё — вы зарегистрировались и у вас есть собственный профиль.
Устанавливаем SSH-ключи
Чтобы получить доступ к проектам на GitHub со своего компьютера и выполнять команды без постоянного ввода пароля, нужно, чтобы сервер вас узнавал. Для этого используются SSH-ключи.
SSH — протокол для безопасного соединения между компьютерами.
SSH-ключ состоит из двух частей — открытого и закрытого ключа. Открытый ключ мы отправляем на сервер. Его можно не прятать от всех и не переживать, что кто-то его украдёт, потому что без закрытого ключа он бесполезен. А вот закрытый ключ — секретная часть, доступ к нему должен быть только у вас. Это важно.
Протокол RSA
Мы будем подключаться к GitHub по SSH. Это работает так:
- Вы отправляете какую-то информацию на GitHub, который знает ваш открытый ключ.
- GitHub по открытому ключу понимает, что вы это вы, и отправляет что-то в ответ.
- Только вы можете расшифровать этот ответ, потому что только у вас есть подходящий закрытый ключ.
А чтобы подключиться к GitHub с помощью SSH-ключа, сначала нужно его создать.
Проверяем SSH-ключи
Перед созданием нового SSH-ключа проверим, есть ли на компьютере другие ключи. Обычно они лежат в папке с названием .ssh
— поэтому посмотрим, есть ли в ней что-то, с помощью команды в терминале:
ls -al ~/.ssh
Полезные команды в терминале Windows
Если у вас уже есть SSH-ключ, то в списке будут файлы с именами вроде id_rsa.pub
, id_ecdsa.pub
или id_ed25519.pub
. А если терминал ругается, что директории ~/.ssh
не существует, значит, у вас нет SSH-ключей. Давайте это исправим.
Создаём новый SSH-ключ
Откройте терминал и скопируйте туда эту команду. Не забудьте подставить в кавычки почту, на которую вы регистрировались на Гитхабе.
ssh-keygen -t ed25519 -C "[email protected]"
ed25519
— это алгоритм для генерации ключей. Если ваша система не поддерживает алгоритм ed25519
(и вы увидели ошибку), используйте немного другую команду с алгоритмом rsa
:
ssh-keygen -t rsa -b 4096 -C "[email protected]"
Терминал спросит, куда сохранить ключ. Если не хотите менять имя файла, которое предлагает терминал, просто нажмите Enter.
> Generating public/private имя-ключа key pair. > Enter a file in which to save the key (/c/Users/ваш-профиль/.ssh/id_имя-ключа):*[Press enter]*
Теперь нужно добавить пароль, которым будет зашифрован ваш ключ. Это стоит сделать, иначе в дальнейшем могут быть проблемы с настройкой, да и так просто безопаснее.
В результате создаётся новый SSH-ключ, привязанный к вашей электронной почте.
Создание ключа по шагам:
Добавляем SSH-ключ в ssh-agent
ssh-agent
— программа для хранения и управления SSH-ключами. Давайте запустим её и добавим туда наш SSH-ключ. Запускаем командой eval "$(ssh-agent -s)"
:
eval "$(ssh-agent -s)"
Если в ответ терминал покажет надпись «Agent pid» и число — значит, всё ок, агент запущен.
Теперь добавим наш ключ командой.
ssh-add ~/.ssh/id_ed25519
Если у вашего ключа другое имя, замените название id_ed25519
именем файла с ключом (это правило применяется и дальше в инструкции). Если вы устанавливали пароль на ключ, введите его два раза после ввода команды ssh-add
(терминал подскажет, когда это сделать).
Теперь, если всё хорошо, появится надпись Identity added — значит, можно переходить к добавлению ключа на GitHub.
Копируем SSH-ключ
Чтобы добавить ключ на GitHub, нужно сначала его скопировать из вашего файла командой clip
. Вы не увидите ключ на экране, но он появится в буфере обмена, и его можно будет вставить на Гитхаб.
clip < ~/. ssh/id_ed25519.pub
Команда clip
может не сработать на вашем компьютере, тогда есть два способа узнать ключ — простой и сложный.
Сложный способ. Найдите скрытую папку .ssh
id_ed25519.pub
в текстовом редакторе и скопируйте его содержимое.Простой способ. Введите команду ниже и ключ появится прямо в терминале — его нужно вручную скопировать в буфер обмена. Ключ начинается с ssh-ed22519
или ssh-rsa
(или похожей строки) — поэтому копируйте строку прямо с самого начала.
~ cat ~/.ssh/id_ed25519.pub ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIO63MT6VCFuZtCLhLj1J6I7dgEU2BsRdIsnvnr4ax+Fr [email protected]
Не копируйте этот ключ из статьи — он уже не работает.
Добавляем SSH-ключ на GitHub
Это нужно сделать, чтобы GitHub вас узнавал.
Перейдите на страницу для работы с ключами в вашем профиле на GitHub и нажмите кнопку New SSH key.
В поле Title нужно добавить название нового ключа. Например, если вы используете Mac, вы можете назвать ключ MacBook Air, или, если ключ для курсов Академии, то Academy. А ключ, который вы скопировали на прошлом шаге, вставьте в поле Key.
Не копируйте ключ со скриншота — он уже не работает.
Теперь нажмите кнопку Add SSH key и, если потребуется, введите свой пароль от GitHub, чтобы подтвердить сохранение. Если всё сделано верно, новый ключ появится в списке на странице https://github. com/settings/keys.
Теперь мы можем поработать с проектом в репозитории.
Что такое репозиторий
Репозиторий — папка с файлами вашего проекта на сервере GitHub. Так вы можете работать с проектом откуда угодно, не переживая, что какие-то файлы потеряются — все данные останутся в репозитории.
Если над проектом работает несколько программистов, сначала создаётся мастер-репозиторий — это общий репозиторий с рабочей версией проекта. А каждый программист работает с форком — то есть полной копией мастер-репозитория. В форке вы можете безнаказанно менять код и не бояться что-то сломать в основной версии проекта.
Делаем форк мастер-репозитория
Заходим в нужный репозиторий и нажимаем на «вилку» с надписью fork.
Появится окно Create a new fork — проверьте, что он называется так, как вам нужно, и жмите кнопку Create fork. Через пару секунд всё готово.
Клонируем форк на компьютер — git clone
Клонировать форк — значит скачать его, чтобы работать с кодом на своём компьютере. Тут нам и пригодится SSH.
Открываем терминал и переходим в папку с будущим проектом — для этого используем команду cd your-project
. Если вы хотите, чтобы проект лежал в папке device
, введите
cd device
Если такой папки на компьютере нет, то сначала введите md your-project
, чтобы создать эту папку, а затем cd your-project
. Подробнее о командах.
Когда перейдёте в папку, введите команду git clone
для клонирования репозитория:
git clone [email protected]:your-nickname/your-project.git
Замените your-nickname
на ваше имя пользователя на GitHub, а your-project
— на название проекта. Проще всего их найти прямо наверху страницы репозитория.
Если вы правильно настроили SSH-ключи, Git скопирует репозиторий на ваш компьютер.
➜ device git clone [email protected]:academy-student/1173761-device-34.git Клонирование в «1173761-device-34»… remote: Enumerating objects: 15, done. remote: Counting objects: 100% (15/15), done. remote: Compressing objects: 100% (14/14), done. remote: Total 15 (delta 0), reused 15 (delta 0), pack-reused 0 Получение объектов: 100% (15/15), 145.07 КиБ | 900.00 КиБ/с, готово.
Если вы видите ошибку
, скорее всего, вы ошиблись в настройке SSH-ключа. Вернитесь в этот раздел инструкции и повторите процесс настройки.
Кстати, если вы хотите, чтобы название папки с проектом у вас на компьютере отличалось от имени репозитория, можете дополнить команду клонирования, добавив в конце другое название:
git clone [email protected]:_your-nickname_/_your-project_.git folder_name
Теперь на вашем компьютере в папке your_project
или в той, название которой вы указали, находится полная копия репозитория c GitHub.
В каждом репозитории есть как минимум одна основная ветка, которую создаёт сам Git — она называется
. Обычно в ней хранят проверенную версию программы без ошибок.
А если вы хотите исправить ошибку в коде или добавить что-то в проект, но не хотите сломать код в основной ветке, нужно создать новую ветку из master
и работать из неё. Каждая ветка — что-то вроде второстепенной дороги, которая затем снова соединится с основной.
Создаём новую ветку — git branch
Откройте терминал и введите команду
git branch
Она показывает список веток, с которыми мы работаем в проекте, и выделяет текущую.
master
, то создаём новую ветку командойgit checkout -b имя-новой-ветки.
➜ 1173761-device-34 git:(master) git checkout -b task1 Переключено на новую ветку «task1» ➜ 1173761-device-34 git:(task1)
Если текущая ветка не master
, переключитесь на неё с помощью команды checkout
. После git checkout
надо указать название нужной ветки.
git checkout master
Мы делаем это, чтобы новая ветка содержала свежую рабочую версию проекта. Если вы ошиблись в названии, например, допустили опечатку, вы можете изменить название ветки с помощью команды:
git branch -m старое-имя-ветки новое-имя-ветки.
Сохраняем изменения — git add
После того, как вы создали ветку и поработали в ней у себя на компьютере, нужно сохранить результат, чтобы появился в репозитории и не пропал.
Если вы хотите сохранить изменения не во всех файлах, для начала введите команду git status
. Она покажет текущее состояние в вашей ветке, а именно список с названиями изменённых файлов, если они есть, и укажет на те, которые ожидают записи и сохранения (обычно они выделены красным цветом).
Чтобы сохранить все изменения разом, используйте команду
git add -A
Чтобы сохранить изменения только отдельных файлов, укажите их имена вручную. Например, если вы изменили файл index.html
, введите
git add index.html
Если название очень длинное, вы начните его писать, нажмите Tab и терминал сам предложит продолжение пути к файлу.
Делаем коммит — git commit
Сделать коммит — значит зафиксировать все сохранённые изменения и дать им название. Это делается с помощью команды commit
git commit -m "ваше сообщение"
Текст сообщения должен быть лаконичным и вместе с этим сообщать о том, что делает коммит (внесённые изменения). Например,
- Добавляет имя наставника в Readme
- Вводит функцию сортировки изображений
- Правит ошибку в поиске городов на карте
Отправляем изменения на GitHub — git push
Сохранённые изменения пока не видны коллегам, потому что находятся в нашем локальном репозитории. Нужно отправить коммиты на GitHub. Для этого введите команду
git push origin название-текущей-ветки
Где origin
означает репозиторий на компьютере, то есть ваш форк. Слово origin
— часть команды, не меняйте это название на своё.
Создаём пулреквест
Пулреквест (или PR) — это предложение изменить код в репозитории. PR должен проверить администратор мастер-репозитория — это может быть коллега-разработчик, техлид или наставник на курсе.
Если к коду нет вопросов, пулреквест принимается. Если нужно что-то исправить — отклоняется, и придётся исправить код и снова пройти цепочку git add
— git commit
— git push
. Если вы и дальше работаете в той же ветке, а пулреквест ещё не принят, все ваши изменения автоматически добавятся в пулреквест, созданный из этой ветки после команды git push origin название-текущей-ветки
.
Чтобы создать пулреквест, зайдите на страницу вашего форка на GitHub. Вверху появилась плашка Compare & pull request, а ещё можно зайти на вкладку Pull Requests.
Нажмите на неё и окажетесь на странице открытия пулреквеста. Проверьте описание и нажмите Create pull request.
Готово, теперь ждём остаётся ждать одобрения пулреквеста или комментариев к нему.
Синхронизируем репозитории
Предположим, вы исправили код, руководитель или наставник одобрил ваши правки и принял пулреквест.
Теперь код в мастер-репозитории обновился, а в вашем форке нет, вы ведь не обновляли свою версию репозитория с тех пор, как клонировали её себе на компьютер. Приведём форк в актуальное состояние.
В локальном репозитории переключаемся на ветку master
.
git checkout master
Забираем изменения из ветки master
мастер-репозитория
git pull [email protected]:academy-student/1173761-device-34.git master
Отправляем изменения уже из своей ветки master
в ваш форк на GitHub с помощью команды
git push origin master
Готово, теперь форк и оригинальный репозиторий находятся в актуальном состоянии.
Словарик
Система контроля версий — программа, которая хранит разные версии одного документа, позволяет переключаться между ними, вносить и отслеживать изменения.
Git — самая популярная система контроля версий. С Git можно работать через терминал.
Как работает терминал: мы вводим команду и получаем ответ компьютера — или всё получилось, или где-то ошибка, или нужно ввести что-то ещё.
GitHub (или Гитхаб) — веб-сервис, основанный на Git, который помогает совместно разрабатывать IT-проекты. На Гитхабе разработчики публикуют свой и редактируют чужой код, комментируют проекты и следят за новостями других пользователей.
SSH-ключ нужен, чтобы получить доступ к проектам на GitHub со своего компьютера и выполнять команды без постоянного ввода пароля, нужно, чтобы сервер нас узнавал.
ssh-agent — программа для хранения и управления SSH-ключами.
Репозиторий — папка с файлами вашего проекта на сервере GitHub или у вас на компьютере.
Мастер-репозиторий — это общий для всей команды репозиторий с рабочей версией проекта.
Форк — полная копия мастер-репозитория, в которой вы можете безопасно работать.
Клонировать форк — скачать его командой git clone
, чтобы работать с кодом на своём компьютере.
Пулреквест (или PR) — предложение изменить код в репозитории. PR должен проверить администратор мастер-репозитория — это может быть коллега-разработчик, техлид или наставник на курсе.
Как пользоваться GitHub: краткий обзор для новичков
Разработчики программ используют в работе различные платформы для обмена исходным кодом, его хранения и распространения. Одной из таких платформ является GitHub. Она настолько популярна, что ее мощностями пользуются даже такие «монстры», как Microsoft и RedHat. Инструментарий платформы включает возможности просмотра кода, а также его распространения с документацией и релизами.
Веб-сервис GitHub востребован для хостинга IT-проектов и совместной разработки. Разработчики системы называют ее «социальной сетью» для программистов. Здесь они объединяют репозитории, комментируют примеры «чужого» кода и используют платформу в качестве облачного хранилища с возможностью быстрой передачи заказчику.
Создание аккаунта в Github
Первый шаг к использованию сервиса GitHub заключается в регистрации нового пользователя. В процедуре нет ничего сложного – достаточно зайти на официальный сайт https://github.com/ и создать новую учетную запись. Система запросит рабочую электронную почту.
Пароль вводится на выбор пользователя, но с учетом правил. Так, рекомендуется комбинация размером в 15 символов или 8, но с использованием хотя бы одной цифры и строчной буквы. Имя пользователя, как и email, проверяется на занятость, и придется выбирать тот, с которым платформа позволит продолжать регистрацию.
Далее нужно указать, хочется ли получать новости об обновлениях продуктов и самой системы. Последним шагом становится подтверждение – пользователю предлагается собрать паззл, после чего станет активной кнопка «Зарегистрироваться».
Вход на платформу будет открыт только после подтверждения электронной почты, поэтому зайти анонимно не получится. Это своеобразная защита сервера от многочисленных ботов и гарантия для пользователей, что они будут общаться с реальными людьми. Теперь можно приступать к управлению настройками внутри личного кабинета.
Комьюнити теперь в Телеграм
Подпишитесь и будьте в курсе последних IT-новостей
Подписаться
Создание репозитория
Важно отметить, что сервис англоязычный, и пользоваться им без знания языка получится только при использовании обновленных версий браузеров типа Google Chrome, где есть встроенные функции по переводу страниц. В любом случае работа начинается с создания собственного репозитория – в бесплатном режиме доступны публичные, частные откроются только при активации платного тарифа.
Последовательность действий:
- Нажать на кнопку «Start a project».
- Ввести название и описание репозитория.
- Поставить галочку на «Initialize this repository with a README».
- Выбрать нужный тип лицензии и нажать на кнопку «Create project».
Тип лицензии (приватная или публичная) допускается заменить после, в процессе использования платформы. Единственная настройка, которую пользователи делают сразу, – это создание нескольких веток для размещения разных проектов. Например, для тестового кода и финальных релизов, чтобы не путать их при разработке и общении с другими кодерами.
Подобный подход часто используют создатели продуктов, которыми пользуются «массы». Им передается ссылка на проверенные стабильные версии, в то время как команда продолжает работу над таким же комплектом файлов без опасения нарушить функциональность системы в целом. При использовании платформы следует ориентироваться на отметку «Branch».
Данная отметка обозначает текущую ветку. Создание новой инициируется просто – достаточно в списке начать набирать еще несуществующее название, и система выдаст сообщение «Create branch». Сразу после этого пользователь перекидывается в новую ветку (это стоит учитывать при работе, чтобы случайно не начать редактирование «не тех файлов»).
Изменение файлов и коммиты
Корректировка файлов на GitHub выполняется при помощи коммитов. Это непосредственно само исправление и краткое описание изменений. Такой подход позволяет «внешним» пользователям ориентироваться в нововведениях кода и упрощает контроль командной работы, когда один и тот же файл может редактироваться разными исполнителями.
Система сохранения информации о корректировках удобна, когда они вносятся в различные участки кода, но связаны с определенной задачей. Фактически текстовый файл с описанием «связывает» разрозненные изменения и объясняет непосвященному программисту их суть, назначение. Чтобы запустить редактирование README, нужно в правой панели нажать на «кисточку».
После этого откроется текстовый редактор, где вносятся исправления. По завершении заполняется поле «Commit» внизу страницы (кратко, что изменилось) и нажимается кнопка «Commit changes». Сохраненные корректировки будут внесены в текущую (активную) ветку проекта, поэтому перед их внесением следует убедиться в правильном выборе.
Создание запросов слияния (Pull Request) в Github
При подключении к работе сторонних специалистов может понадобиться функция запроса слияния (Pull Request). Инструмент для работы в таком формате называется DIFF. Он подчеркивает любые «чужие» изменения, чтобы владелец программы сразу видел, где код писал не он. Пометки будут доступны только после создания коммита.
Последовательность действий:
- Открыть вкладку «Pull Request».
- Нажать на кнопку «Create Pull Request».
- Выбрать ветку, которую следует слить с основной.
- Просмотреть внесенные кодером изменения.
После изучения информации созданный запрос на слияние подтверждается нажатием «Merge Pull Request». Новый код будет импортирован в основную ветку, а созданная сторонним исполнителем может спокойно удаляться.
Отчеты об ошибках
Платформа GitHub используется не только для совместной разработки, а еще и для получения обратной связи с пользователями продуктов. Так, на вкладке «Issue» любой «тестировщик» может оставить сообщение о проблемах, с которыми ему пришлось столкнуться при использовании ПО. Чтобы сделать это, нужно нажать кнопку «New issue».
После этого вносится заголовок и текст сообщения. «Проблема» отправляется нажатием на кнопку «Create new issue». Владелец ветки получает уведомления в личном кабинете или на электронную почту, указанную при регистрации.
Заключение
Финалом разработки обычно становится выпуск определенного релиза программного продукта. Это отражается на вкладке «Releases». Здесь следует нажать на кнопку «Create New Release», указать номер версии в поле «Tag Version», внести ее название и небольшое описание. Здесь же прикрепляются архивы с компилированными файлами.
Остается нажать на «Create Release» и убедиться в публикации релиза. Ссылки на исходный код в tar.gz и zip создаются автоматически. Остальные файлы понадобится добавлять вручную.
Настройка репозитория | Atlassian Git Tutorial
Этот обучающий материал включает в себя обзор настройки репозитория в системе контроля версий Git. На этой странице вы узнаете, как инициализировать репозиторий Git для нового или существующего проекта. Ниже представлены примеры жизненного цикла для репозиториев, созданных локально и клонированных из удаленных репозиториев. Для работы с этим руководством требуются начальные знания о работе с интерфейсом командной строки.
В данном руководстве обсуждаются следующие основные вопросы:
- Инициализация нового репозитория Git
- Клонирование существующего репозитория Git
- Коммит измененной версии файла в репозиторий
- Конфигурирование репозитория Git для удаленной совместной работы
- Распространенные команды для управления версиями Git
По окончании данного модуля вы должны уметь создавать репозиторий Git, использовать основные команды Git, выполнять коммит измененного файла, просматривать историю проекта и настраивать соединение с сервисом хостинга Git (Bitbucket).
Что такое репозиторий Git?
Репозиторий Git — это виртуальное хранилище проекта. В нем можно хранить версии кода для доступа по мере необходимости.
Инициализация нового репозитория: git init
Для создания нового репозитория используется команда git init
. Команду git init
выполняют только один раз для первоначальной настройки нового репозитория. Выполнение команды приведет к созданию нового подкаталога .git
в вашем рабочем каталоге. Кроме того, будет создана новая главная ветка.
Создание версии существующего проекта с использованием нового репозитория Git
В этом примере предполагается, что у вас уже есть папка проекта, в которой вы и хотите создать репозиторий. Выполните команду cd
для перехода к папке проекта, а затем выполните команду git init
.
cd /path/to/your/existing/code
git init
Указание в команде git init
существующего каталога проекта приведет к исполнению описанной выше инициализации, но только на уровне этого каталога проекта.
git init <project directory>
Перейдите на страницу git init, чтобы получить подробные сведения о команде git init
.
Клонирование существующего репозитория: git clone
Если проект уже настроен в центральном репозитории, наиболее распространенным способом создать его локальный клон является команда clone. Клонирование, как и команда git init
, обычно выполняется один раз. Получив рабочую копию, разработчик в дальнейшем выполняет все операции контроля версий из своего локального репозитория.
git clone <repo url>
Команду git clone
выполняют для создания копии (клонирования) удаленного репозитория. В качестве параметра в команду git clone
передается URL-адрес репозитория. Git поддерживает несколько различных сетевых протоколов и соответствующих форматов URL-адресов. В этом примере используется SSH-протокол Git. URL-адреса SSH в Git имеют следующий шаблон: git@HOSTNAME:USERNAME/REPONAME. git
Пример URL-адреса SSH в Git имеет вид: [email protected]:rhyolight/javascript-data-store.git
, а ниже приведены значения шаблонных параметров:
HOSTNAME: bitbucket.org
USERNAME: rhyolight
REPONAME: javascript-data-store
После исполнения команды последние версии файлов из главной ветки удаленного репозитория будут загружены и помещены в новый каталог. Имя нового каталога будет соответствовать параметру REPONAME. В данном случае это javascript-data-store
. В каталоге будет вся история удаленного репозитория и только что созданная главная ветка.
Дополнительную информацию об использовании команды git clone
и поддерживаемых форматах URL-адресов в Git см. на странице git clone.
Сохранение изменений в репозитории: git add и git commit
У вас появился репозиторий, созданный путем клонирования или инициализации. Теперь вы можете выполнять коммиты изменений в версиях файлов. В следующем примере предполагается, что вы настроили проект в каталоге /path/to/project
. В этом примере предлагаются следующие шаги.
- Измените каталоги на
/path/to/project
- Создайте новый файл
CommitTest.txt
с текстом ~«тест для обучения работе с Git»~ - С помощью команды git add добавьте файл
CommitTest.txt
в репозиторий проиндексированных файлов - Создайте новый коммит с комментарием, описывающим, что именно было изменено в коммите
cd /path/to/project
echo "test content for git tutorial" >> CommitTest.txt
git add CommitTest.txt
git commit -m "added CommitTest.txt to the repo"
По завершении этого примера файл CommitTest.txt
добавится к истории репозитория, и репозиторий будет отслеживать последующие изменения в файле.
В этом примере представлены две новые команды в Git: add
и commit
. Этот очень упрощенный пример. Подробнее обе команды объяснены на страницах git add и git commit. Команду git add
часто используют с флагом --all
. Команда git add --all
добавляет все измененные и неотслеживаемые файлы в репозиторий и обновляет дерево изменений репозитория.
Совместная работа в разных репозиториях: git push
Важно понимать, что рабочая копия в Git существенно отличается от рабочей копии, получаемой при загрузке исходного кода из репозитория SVN. В отличие от SVN, в Git нет разницы между рабочими копиями и центральным репозиторием — все они являются полноценными репозиториями Git.
Поэтому совместная работа в Git принципиально отличается от совместной работы в SVN. В SVN работа строится на отношении между центральным репозиторием и рабочей копией, а модель совместной работы в Git основана на взаимодействии между репозиториями. Вместо загрузки рабочей копии в центральный репозиторий SVN в Git вы отправляете коммиты из одного репозитория в другой или копируете их в обратном направлении.
Вы легко можете задавать особую роль определенным репозиториям Git. Например, обозначив один из репозиториев Git как «центральный», вы можете воспроизвести централизованный процесс с использованием Git. Такой подход требует общих договоренностей, он не встроен в саму систему контроля версий.
Сравнение чистых и клонированных репозиториев
Если в предыдущем разделе («Инициализация нового репозитория») для настройки локального репозитория вы использовали команду git clone
, ваш репозиторий уже готов к удаленной совместной работе. Команда git clone
автоматически настроит репозиторий, в котором значение remote будет соответствовать URL-адресу Git, из которого был клонирован репозиторий. Это означает, что после изменений файла и выполнения коммита вы можете сразу выполнить команду git push
, чтобы отправить эти изменения в удаленный репозиторий.
Если вы использовали команду git init
для создания репозитория с нуля, у вас не будет удаленного репозитория, в который можно помещать изменения. Зачастую для инициализации нового репозитория пользователь переходит на сервис Git-хостинга (например, Bitbucket) и создает репозиторий там. Данный сервис предоставит URL-адрес Git, который затем можно добавить в локальный репозиторий Git. После этого можно выполнять команду git push
в репозиторий на хостинге. После создания удаленного репозитория на выбранном хостинге вам понадобится обновить локальный репозиторий, выполнив привязку. Этот процесс описывается далее в руководстве по установке и настройке.
Если вы предпочитаете поддерживать собственный удаленный репозиторий, вам нужно создать «чистый репозиторий». Для этого команды git init
и git clone
принимают аргумент --bare
. Наиболее популярная причина использования чистого репозитория — создание удаленного центрального репозитория Git
Конфигурирование и настройка: git config
После настройки удаленного репозитория его URL-адрес нужно добавить в локальный файл git config
, а также создать вышестоящую ветку для локальных веток. Такую возможность предоставляет команда git remote
.
git remote add <remote_name> <remote_repo_url>
Эта команда привяжет удаленный репозиторий по адресу к ссылке в вашем локальном репозитории
. После привязки удаленного репозитория в него можно будет отправлять локальные ветки с помощью команды push.
git push -u <remote_name> <local_branch_name>
Эта команда поместит ветку локального репозитория с именем в удаленный репозиторий
.
Дополнительную информацию о команде git remote
см. на странице удаленной работы в Git
.
Помимо конфигурирования URL-адреса удаленного репозитория, вам может потребоваться установить глобальные параметры Git, например имя пользователя или электронный адрес. Команда git config
позволяет настроить инсталляцию Git (или отдельный репозиторий) из командной строки. С помощью этой команды можно установить любые настройки: от информации о пользователе до его предпочтений и характеристик репозитория. Ниже перечислены распространенные варианты конфигурации.
Git хранит варианты конфигурации в трех различных файлах, позволяющих ограничивать область видимости на уровне отдельных репозиториев (локальный), пользователя (глобальный) или всей системы (системный):
- Локальный:
/.git/config
— настройки на уровне репозитория. - Глобальный:
/.gitconfig
— настройки на уровне пользователя. Здесь хранятся настройки с флагом —global. - Системный:
$(prefix)/etc/gitconfig
— настройки на уровне всей системы.
Укажите имя автора, которое будет использоваться для всех коммитов в текущем репозитории. Обычно для настройки параметров конфигурации для текущего пользователя используется флаг --global
.
git config --global user.name <name>
Эта команда задает имя автора, которое будет использоваться для всех коммитов, выполненных текущим пользователем.
Добавление аргумента --local
или выполнение команды без параметра уровня конфигурации приведет к установке значения user. name
для текущего локального репозитория.
git config --local user.email <email>
Эта команда задает адрес электронной почты автора, который будет использоваться для всех коммитов, выполненных текущим пользователем.
git config --global alias.<alias-name> <git-command>
Создайте быстрые клавиши для команды Git. Это мощная возможность для создания собственных комбинаций клавиш для часто используемых команд Git. Ниже показан упрощенный пример:
git config --global alias.ci commit
Так создается команда ci
, которую можно использовать как сокращение команды git commit
. Подробнее об алиасах в Git см. на странице git config.
git config --system core.editor <editor>
Выберите текстовый редактор, используемый для таких команд, как git commit
, для всех пользователей текущего компьютера. Аргумент должен представлять собой команду, запускающую нужный редактор (например, vi). В этом примере представлен аргумент
--system
. Аргумент --system
устанавливает настройку на уровне всей системы, включая всех пользователей и все репозитории на компьютере. Дополнительную информацию об уровнях конфигурации см. на странице удаленной работы с git.
git config --global --edit
В текстовом редакторе откройте файл глобальной конфигурации для редактирования вручную. Подробное руководство по настройке текстового редактора для Git см. на странице Git config.
Пояснения
Все варианты конфигурации сохраняются в обычных текстовых файлах, так что команда git config
— это всего лишь удобный интерфейс командной строки. Как правило, установку Git следует настраивать только при начале работы на новом компьютере. В подавляющем большинстве случаев понадобится только флаг --global
. Одно из важных исключений — необходимость переписать электронный адрес автора. Вы можете поставить личный электронный адрес для личных репозиториев и репозиториев с открытым исходным кодом, а рабочий электронный адрес — для рабочих репозиториев.
Git хранит варианты конфигурации в трех различных файлах, что позволяет ограничивать область видимости на уровне отдельных репозиториев, пользователей или всей системы.
/.git/config
— настройки на уровне репозитория.~/.gitconfig
— личные настройки пользователя. Здесь хранятся настройки с флагом —global.$(prefix)/etc/gitconfig
— настройки на уровне всей системы.
Если параметры, указанные в этих файлах, конфликтуют, локальные настройки переопределяют пользовательские настройки, которые в свою очередь переопределяют системные настройки. Если вы откроете один из этих файлов, вы увидите нечто подобное:
[user] name = John Smith email = [email protected] [alias] st = status co = checkout br = branch up = rebase ci = commit [core] editor = vim
Вы можете изменить эти значения вручную, эффект будет аналогичен использованию команды git config
.
Пример
В первую очередь после установки Git требуется указать свое имя и адрес электронной почты, а также настроить некоторые параметры по умолчанию. Пример типичной начальной конфигурации показан далее.
Представьтесь репозиторию Git с помощью команды git config
git --global user.name "John Smith" git config --global user.email [email protected]
Выберите любимый текстовый редактор
git config --global core.editor vim
Добавьте алиасы по типу SVN
git config --global alias.st status
git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.up rebase
git config --global alias.ci commit
Создастся файл ~ /.gitconfig
, описанный в предыдущем разделе. Подробную информацию о команде git config см. на странице Git config.
Резюме
Мы показали, как создать репозиторий Git двумя способами: git init и git clone. Этим руководством можно пользоваться при необходимости управления исходным кодом ПО или другим контентом, при хранении которого требуется поддерживать версионность. Кроме того, были представлены команды git add, git commit, git push и git remote и показаны простые примеры их использования.
Прочтите наше руководство о том, как подобрать оптимальную систему репозиториев кода для своей команды.
Система контроля версий Git. Урок 2
Заливаем репозиторий на GitHub
- Редакция
04.02.2022
Поделиться
Продолжаем изучать систему контроля версий git. Сегодня говорим про GitHub. На прошлом уроке мы создали локальный репозиторий для проекта. Но хранить данные только на компьютере опасно, если папка с репозиторием удалится или потеряется, весь проект пропадет. Поэтому важно дублировать все файлы и историю их изменений на сервере. Самая популярная платформа, на которой разработчики размещают репозитории — GitHub. Зарегистрируйтесь на нем. Это так же просто, как создать аккаунт в соцсетях.
Съемка и монтаж: Глеб Лиманский
Настраиваем доступ по токену
Когда вы зарегистрировались и зашли в аккаунт, стоит настроить доступ по токену. Это важная мера безопасности. Даже если ваш пароль кто-то украдет, зайти в аккаунт он не сможет. Токен — более продвинутый метод защиты, чем пароль. Аутентификация по токену генерирует входные данные отдельно для каждого устройства и сеанса. У токенов можно менять права доступа или отзывать их. Подобрать токен перебором невозможно.
Переходим в меню под фото профиля. Settings → Developer settings → Personal access tokens → Create new token.
Разные токены нужны для разных доступов, чтобы не запутаться, давайте дадим нашему токену название tutorial. В настройках для начала достаточно поставить галочку рядом с repo. Создаем токен. Получившийся токен нужно обязательно сохранить в какой-то надежный файл, а лучше в менеджер паролей.
Откроем терминал по адресу нашего проекта. На mac нужно выбрать «новый терминал по адресу папки». На Windows будет вариант «GitBush here».
Чтобы настроить доступ по токену, воспользуемся уже известной утилитой git config: git config —global user. name <username, который задавали при регистрации>
Теперь вводим токен: git config —global user.password <ваш токен>
Устанавливаем двухфакторную аутентификацию
Вторая важная настройка безопасности — двухфакторная аутентификация. Settings → Password and Autentication → Enable Two-Factor Authentication.
В качестве второго фактора лучше использовать не SMS, а приложение, например Google Аuthenticator. Его нужно скачать на телефон, нажать на плюс, чтобы добавить новый код, затем отсканировать qr-код, который появится на сайте, и ввести сгенерированный шестизначный код. После этого нужно скачать коды восстановления и сохранить их в надежное место.
Создаем репозиторий на GitHub
Можем создать первый удаленный репозиторий. Нажимаем на + в правом верхнем углу, выбираем New repository.
Задаем имя репозитория, например, git_tutorial.
Можем добавить описание: «Учимся работать с удаленным репозиторием».
GitHub предлагает нам сразу создать два базовых файла README.md и .gitignore. Но у нас уже есть локальный репозиторий, с которым мы начали работать, добавим эти файлы в него. А на этом шаге просто нажимаем create repository.
Файлы README и gitignore
Файл README.md — это текстовый файл, в котором на языке markdown можно добавить описание проекта. Файл README необязателен, но помогает лучше ориентироваться в своих и чужих репозиториях. Давайте его добавим в нашу папку с проектом. Напишем заголовок «Тестовый репозиторий» и описание: «Это тестовый репозиторий, в котором я учусь работать с git».
Описания могут быть и гораздо более подробными, содержать картинки, ссылки, вставки кода. Подробнее о языке markdown можно прочитать в официальном гайде.
В проекте появился новый файл. Вернемся в терминал и добавим его в отслеживание: git add README.md
Закоммитим: git commit -m “Add README”
Файл .gitignore нужен, чтобы прописать те файлы, которые мы не хотим отслеживать. Это могут быть конфигурационные или временные файлы, которые автоматически создаются по ходу работы. Учесть все ненужные файлы, которые могут появиться, и самостоятельно создать gitignore-документ сложно. Поэтому можно использовать шаблоны, а потом уже дополнять их самостоятельно по ходу работы. Мы программируем на python, поэтому для примера я нашла gitignore для python. Создадим файл .gitignore в нашей папке и скопируем в него названия файлов.
Добавим новый файл в отслеживание и закоммитим изменения.
git add .gitignore
git commit -m “Add gitignore”
Проверим git status. Все закоммичено.
Теперь в репозитории есть все нужные файлы, можем добавить его на GitHub. GitHub можно использовать как обычное хранилище и загружать почти любые файлы. Для этого нужно нажать «загрузка нового файла» и выбрать, что мы хотим загрузить.
Можно таким путем добавить и наш репозиторий. Но так файлы просто скопируются из одного место в другое, а нам нужно привязать локальный репозиторий к серверу.
Просматриваем историю изменений
Вернемся в терминал. Вспомним, какие изменения мы уже локально коммитили на прошлом уроке. Посмотреть все коммиты можно с помощью команды git log. Сейчас мы видим все коммиты.
У каждого коммита есть уникальный идентификатор — набор цифр и букв. Мы видим кто и когда сделал каждый коммит, какое сообщение он написал. Подробнее посмотреть информацию о конкретном коммите можно с помощью команды: git show <5 первых символов идентификатора>
В таком режиме мы видим, какие изменения были внесены.
Зеленые плюсы — какие строки добавились, красные минусы — какие удалились.
Чтобы выйти из log, нужно нажать q в английской раскладке.
Еще раз посмотрим всю историю: git log. Наши изменения лежат в ветке master (на Windows будет ветка main), подробнее про ветки мы еще будем говорить на следующем занятии. Сейчас достаточно знать, что это основная ветка. Но на GitHub основная ветка называется main.
Чтобы не возникало проблем при сохранении проекта на сервере, переименуем нашу локальную ветку: git branch -m master main. (Для Windows это делать не нужно)
Проверим историю: git log. Видим, что ветка переименовалась.
Передаем репозиторий на сервер
Передадим наш репозиторий на сервер. Связаться с удаленным репозиторием можно по ссылке. Откроем репозиторий на GitHub и скопируем ссылку.
В открытом терминале пишем команду:
git remote add origin <ссылка на репозиторий>
(Чтобы вставить скопированную ссылку в терминал на Windows, нужно зажать ctrl и нажать левой кнопкой мыши или тачпада.)
Origin — это имя удаленного репозитория, которое мы будем дальше использовать вместо ссылки. Проверим, подключился ли репозиторий. Команда git remote -v показывает, какие удаленные репозитории присоединены. Мы видим присоединенный репозиторий.
Теперь можем отправить на него наш локальный репозиторий: git push -u origin main
Обновим страницу: наш репозиторий появился на сайте.
В заголовке видим последний коммит. Если нажмем на часы — увидим историю коммитов. Такую же, как в git log.
Теперь пройдем весь путь от внесения изменений, до передачи их на сервер.
Вносим изменения и исправляем ошибки
Вносим изменения в наш файл test.py: print(“We learn GitHub”)
Добавляем изменение в отслеживание и закоммитим: git commit -a -m “Add third line”
В работе над реальным проектом, важно емко описывать изменения, которые вы внесли. Это поможет лучше ориентироваться в репозитории.
Теперь давайте представим, что мы закоммитили ошибочное изменение. Допишем в файл строку: print(“False line”)
Добавим изменение в отслеживание и закоммитим: git commit -a -m “False commit”
Проверим историю: git log
Мы видим ошибочный коммит.
Чтобы отменить его, воспользуемся командой: git revert <первые 5 символов идентификатора коммита>
Мы попали в текстовый редактор, где уже есть сообщение об отмене коммита, можем написать другое сообщение или сохранить предложенное, чтобы выйти из текстового редактора нажмем cmd+X, затем y и enter.
Проверим историю: git log. Мы видим, что git создал новое сохранение с отменой коммита, а в файле ненужная строка удалилась.
Заливаем изменения на сервер
Проверим git status. Дерево чистое, можем заливать коммиты на сервер: git push. Нам не нужно еще раз писать origin main, потому изменения из ветки main на ветку origin мы уже передавали в прошлый раз. Откроем наш репозиторий на сайте. Зайдем в файл test.py. Видим, что третья строка появилась, а четвертая ошибочная строка не закоммитилась, как нам и было нужно.
Копируем удаленные репозитории
GitHub позволяет не только создавать свои репозитории, но и копировать чужие. Зайдем на GitHub «Важных историй», выберем любой репозиторий. Скопируем ссылку.
Создадим папку на компьютере для этого репозитория. Откроем терминал в этой папке. Введем команду git clone <ссылка на репозиторий>
Вы можете просто открыть папку и проверить, что в нее скопировались все файлы из репозитория.
Можно это сделать и в терминале, просмотрев все внутренние папки: ls
Перейдем в репозиторий: cd <название клонированной папки с репозиторием>
Теперь мы можем работать с этим репозиторием локально: вносить изменения, просматривать историю коммитов.
Если у вас появятся вопросы, попробуйте найти ответ в интернете. Часто достаточно скопировать полученную ошибку и забить ее в поиск в браузере. Если все же не получается найти ответ, пишите нам в чате в Telegram.
Работа с Git на хостинге | REG.RU
Что такое Git
Git — система контроля версий, которая позволяет хранить и отслеживать внесённые в файлы изменения. С Git над одним проектом могут работать несколько разработчиков.
Для создания проекта (например, сайта) с использованием Git вам понадобится:
Локальный репозиторий — хранилище Git на локальном компьютере. Сначала вы работаете над проектом на своём рабочем компьютере и сохраняете изменения в локальный репозиторий с помощью коммита (commit). Затем помещаете (push) изменения в удалённый репозиторий. Если над проектом работают несколько разработчиков, у каждого свой локальный репозиторий.
Удалённый репозиторий — система управления репозиториями кода для Git. Например: GitHub, GitLab, Bitbucket. После завершения локальной работы над кодом каждый разработчик проекта отправляет свою часть кода или изменения в удалённый репозиторий, где всё сливается (merge) воедино, а затем разворачивается (deploy) на сервер проекта.
Сервер проекта — это виртуальный хостинг, VPS или любой другой сервер. Развернуть свой проект можно несколькими способами. Существуют системы автоматического развёртывания из удалённого репозитория, а также ручное клонирование с помощью Git.
На хостинге REG.RU установлен Git, благодаря чему вы сможете упростить процесс разработки и публикации сайта. Обратите внимание: на хостинге REG.RU по умолчанию используется Git версии 1.7.1. Для запуска версии 2.19.2 используйте алиас git2192.
Ниже рассмотрим, как поместить код в удалённый репозиторий на примере GitHub и как клонировать файлы на услугу хостинга.
Подготовка к работе
Для работы вам необходимо скачать Git с официального сайта и установить на свой локальный компьютер. Для пользователей Linux Git, как правило, доступен из коробки. Для пользователей Windows рекомендуем использовать графические оболочки, например SmartGit или GitKraken.
Работа с Git происходит через терминал. Если у вас нет локального репозитория, создайте его в каталоге проекта с помощью команды
git init
Файлы, которые необходимо отправить в удалённый репозиторий, добавьте с помощью команды
git add каталог/название_файла
или же выполните командуgit add .
, чтобы добавить все папки и файлы, которые находятся каталоге вашего проекта.Создайте коммит с помощью команды
git commit -m "any comment"
Готово, вы создали репозиторий, добавили туда файлы проекта и сделали свой первый коммит. Подробнее о работе с Git, создании веток, слиянии, откате изменений и прочих командах вы можете узнать в официальной документации.
Отправка изменений в удалённый репозиторий
Все команды будут выстроены на примере работы с GitHub. Работа с другими хранилищами репозитория происходит по аналогии.
- 1.
На сайте GitHub создайте репозиторий. После этого вы получите ссылку на ваш репозиторий, например: https://github.com/userName/regru-hosting.git
- 2.
На локальном компьютере, в терминале, добавьте ссылку удалённого репозитория с помощью команды:
git remote add origin https://github.com/userName/regru-hosting.git
- 3.
Затем отправьте изменения в удалённый репозиторий с помощью команды:
git push origin master
Система запросит ваш логин и пароль от GitHub.
Готово, после завершения отправки ваши файлы появятся в удалённом репозитории на GitHub.
Публикация сайта с GitHub на хостинг
Ваш домен должен быть привязан к услуге хостинга.
Чтобы клонировать изменения с GitHub на хостинг REG.RU:
- 1.
Подключитесь к вашей услуге хостинга по SSH.
- 2.
Перейдите в корневой каталог вашего сайта.
- 3.
Выполните команду:
git clone https://github.com/mrradu/regru-hosting.git
Важно: в конце команды должна стоять точка. Это нужно для копирования самих файлов из репозитория в корневой каталог. Иначе в корневой каталог будет загружен каталог репозитория, а уже затем в него сами файлы.
В дальнейшем вместо команды из 3 шага вы можете выполнить команду git pull
, которая будет синхронизировать файлы на хостинге с файлами из репозитория.
Готово, теперь вы можете работать над проектом локально, сохранять свои изменения в удалённом репозитории, а затем публиковать их на хостинг.
Создание открытого SSH-ключа
- 1.
Проверьте, есть ли SSH-ключи на вашем хостинге. Для этого:
Перейдите в каталог, в котором они хранятся:
cd ~/.ssh
Запросите содержимое каталога:
- 2.
В зависимости от вывода команды выберите нужный вариант.
- Если в выводе команды отображается следующее содержимое:
authorized_keys2 id_rsa known_hosts config id_rsa.pub
Где id_rsa.pub — открытый ключ, а id_rsa — приватный ключ.
Перейдите в каталог, в котором хранятся SSH-ключи:
cd ~/.ssh/
Откройте файл командой:
cat id_rsa.pub
- Если в выводе команды вы видите ошибку «No such file or directory», создайте ключи самостоятельно. Для этого:
Запустите утилиту:
ssh-keygen
Укажите имя файла:
Enter file in which to save the key (~/. ssh/id_rsa): id_rsa
Где id_rsa — имя файла без расширения.
Укажите пароль:
Enter passphrase (empty for no passphrase):
Вы можете оставить пароль пустым, для этого нажмите Enter.
Перейдите в каталог, в котором хранятся SSH-пароли:
cd ~/.ssh/
Откройте файл командой:
cat id_rsa.pub
Где id_rsa.pub — название файла открытого ключа.
Готово, вы сгенерировали ключи.
Помогла ли вам статья?
Да
6 раз уже помогла
Как использовать Git {Руководство для начинающих} + Начало работы с GitHub
Введение
Git — самая популярная в мире система контроля версий ( VCS ), и, следовательно, знание того, как использовать Git, стало обязательным навыком в мир кодирования.
Из этого пошагового руководства для начинающих вы узнаете, как начать эффективно использовать Git.
Что такое Git и что такое GitHub
Git — это бесплатная распределенная система управления версиями с открытым исходным кодом, которая обрабатывает изменения исходного кода в программных проектах все размеры . Git позволяет нескольким разработчикам легко работать вместе над одним проектом.
С другой стороны, GitHub — это компания, которая предлагает облачный репозиторий , позволяющий разработчикам хранить и управлять своим кодом, а также отслеживать и контролировать изменения кода. Вы можете использовать Git без GitHub, но вы не можете использовать GitHub без Git.
Примечание: Подробнее о Git читайте в нашей статье о том, что такое Git. А чтобы узнать больше о рабочих процессах git, прочитайте нашу статью о том, как работает git.
Учебное пособие по Git: как использовать Git {Пошаговое руководство для начинающих}
Чтобы начать работу с Git, выполните следующие действия.
Шаг 1.
Установите Git и создайте учетную запись GitHubПервое, что вам нужно сделать, это установить Git и создать учетную запись GitHub.
Существует несколько способов установки Git. Следуйте приведенным ниже инструкциям, чтобы установить Git в вашей системе:
- Установить Git на Windows
- Установить Git на Mac
- Установить Git на Ubuntu
- Установить Git на CentOS 7
- Установить Git на CentOS 8
Примечание . Если на вашем компьютере уже установлен Git, лучше всего обновить его до последней доступной версии .
Чтобы обновить Git, следуйте инструкциям в нашей статье о том, как обновить Git в Windows, macOS или Linux.
После установки Git на вашем компьютере следующим шагом будет создание бесплатной учетной записи GitHub.
Выполните следующие действия:
1. Посетите официальную страницу создания учетной записи: Присоединяйтесь к GitHub
2. Выберите имя пользователя , введите свой адрес электронной почты и выберите пароль .
3. Включите или отключите получение обновлений и объявлений, установив/сняв флажок Настройки электронной почты .
4. Подтвердите, что вы не робот, решив головоломку Captcha .
5. Нажмите Создать учетную запись .
6. GitHub отправляет код запуска на указанный адрес электронной почты. Скопируйте и вставьте код в указанное поле.
7. При необходимости введите данные персонализации учетной записи, когда будет предложено или Пропустить и нажмите Продолжить .
Теперь вы успешно создали учетную запись GitHub.
Шаг 2. Создание локального репозитория Git
После установки или обновления Git следующим шагом будет создание локального репозитория Git . В нашей статье подробно объясняется, что такое репозиторий Git и как его создать.
Чтобы создать репозиторий Git, выполните следующие действия:
1. Откройте терминал Git Bash и перейдите в каталог, в котором вы хотите сохранить проект на локальном компьютере. Например:
cd ~/Рабочий стол mkdir мой проект cd myproject/
В этом примере мы изменили каталог на Desktop и создали подкаталог с именем myproject .
2. Создайте репозиторий Git в выбранной папке, выполнив команду git init
. Синтаксис:
git init [имя-репозитория]
Теперь вы успешно создали локальный репозиторий Git.
Шаг 3. Создайте новый репозиторий на GitHub
GitHub позволяет вам отслеживать свой код, когда вы работаете в команде и вам необходимо совместно изменить код проекта.
Выполните следующие действия, чтобы создать новый репозиторий на GitHub:
1. Войдите в систему и перейдите на домашнюю страницу GitHub.
2. Найдите параметр Новый репозиторий под знаком + рядом с изображением вашего профиля в правом верхнем углу.
3. Введите имя репозитория, краткое описание и выберите параметр конфиденциальности.
4. Нажмите кнопку Создать репозиторий .
GitHub позволяет вам добавить существующий репозиторий, который вы создали локально . Чтобы отправить локальный репозиторий с вашего компьютера на GitHub, используйте следующий синтаксис:
git remote add origin https://github.com/[ваше-имя-пользователя]/[имя-репозитория.git] git push -u мастер происхождения
Например:
Шаг 4: Добавление файла в репозиторий
Git замечает, когда вы добавляете или изменяете файлы в папке, содержащей репозиторий Git, но не отслеживает файл, если не указано иное. Git сохраняет изменения только для файлов, которые он отслеживает, поэтому вам нужно сообщить Git, что вы хотите отслеживать изменения для определенного файла.
Вы можете проверить, какие файлы отслеживает Git, выполнив:
git status
Git уведомит вас, если у вас есть неотслеживаемые файлы. Если вы хотите, чтобы Git начал отслеживать файл, выполните следующую команду:
git add [имя файла]
Например:
В этом примере мы указали Git начать отслеживать изменения для файла test.txt . Повторный запуск команды git status
показывает, что Git отслеживает указанный файл.
Шаг 5. Удаление файлов из Git
Работа с Git обычно включает добавление всех файлов в индекс для подготовки их к фиксации. Если вы хотите удалить некоторые файлы из индекса перед фиксацией, вам нужно удалить файлы из индекса в Git.
Один из способов отключить файлы в Git — запустить команду git reset
. Синтаксис:
git reset [commit] -- [file_path]
Например:
Примечание: Вы также можете использовать команду rm
для удаления файлов в Git.
Синтаксис: git rm --cached [имя-файла]
.
Шаг 6. Создайте фиксацию
После добавления указанных файлов в промежуточную среду попросите Git упаковать файлы в фиксацию с помощью команда git commit
. Затем Git сохраняет эту версию файла. Вы можете просмотреть сохраненную версию в любое время.
Синтаксис:
git commit -m "Примечания о фиксации"
Добавить сообщение в конце фиксации, чтобы указать, является ли это новой функцией, исправлением ошибки или чем-то еще. Коммиты остаются в репозитории, и их редко удаляют, поэтому объяснение того, что вы изменили, помогает другим разработчикам, работающим над проектом, или помогает вам отслеживать все изменения.
Например:
Шаг 7: Отменить последнюю фиксацию
Важно : Git позволяет пользователям отменить последнюю фиксацию. Однако другие разработчики могли уже получить обновленный проект, и удаление обновлений из одной системы могло вызвать конфликты для других членов команды.
Используйте команды revert
и reset
, чтобы отменить изменения и вернуться к предыдущей фиксации.
Чтобы отменить опубликованную фиксацию, используйте следующий синтаксис:
git revert [хэш]
Хэш — это код, который идентифицирует каждую фиксацию. Получите хэш фиксации, выполнив:
git log
Например:
В этом примере мы сначала запустили команду git log
, чтобы получить хэш фиксации, а затем отменили последнюю фиксацию, выполнив git revert
с полученным хешем коммита.
Примечание: Еще одна полезная вещь, которую нужно знать, это как восстановить репозиторий Git, если вы случайно удалили его или принудительно отправили новую фиксацию перед получением последней версии.
Шаг 8. Создайте новую ветку
Первая ветка в репозитории git называется master и является основной веткой в проекте.
Создание новой ветки Git означает создание копии проекта с определенного момента времени. Ветки в Git позволяют пользователям создавать новые функции, не применяя изменения к основной ветке, пока функция находится в разработке.
Обычный метод создания новой ветки — запуск:
git branch [new_branch_name]
Например:
В этом примере мы создаем новую ветку с именем new-feature .
Шаг 9. Переключение ветвей
Наличие нескольких ветвей проекта Git предоставляет разработчикам тестовую среду для отслеживания прогресса, не затрагивая производственную версию приложения. Git позволяет легко переключаться между ветвями с помощью команды checkout
. Синтаксис:
git checkout [branch_name]
Заменить [название_ветки]
с именем ветки, к которой вы хотите получить доступ.
Например:
Шаг 10. Переименуйте локальную или удаленную ветку Git
В Git вы можете переименовать локальную или удаленную ветку Git.
Синтаксис для изменения имени локальной ветки Git:
git branch -m новое имя
Например:
В этом примере мы изменили имя локальной ветки с new-feature на feature -тестин г.
Поскольку нет способа напрямую переименовать удаленную ветку Git , вам сначала нужно удалить старое имя ветки, а затем отправить новое имя ветки в удаленный репозиторий.
Шаг 11. Удаление локальной или удаленной ветки Git
Вы можете решить удалить ветку Git после слияния изменений с основной веткой или в случае повреждения веток.
Вы можете удалять локальные и удаленные ветки Git.
Удаление локальной ветви не влияет на удаленную ветвь. Чтобы удалить local Ветка Git, запустите:
git branch -d [branch_name]
Используйте следующий синтаксис для удаления remote Git ветки:
git push [remote_project] --delete [branch_name]
В этом примере , мы удалили локальную ветку Git:
Шаг 12: Установить вышестоящую ветку
Отправка чего-либо вверх по течению в Git означает, что вы отправляете это обратно владельцу репозитория.
Используя команду git set upstream
, вы можете выбрать направление потока вашей текущей локальной ветки. Команда также позволяет изменить удаленную ветку по умолчанию.
В нашем учебнике о том, что такое Git Upstream и как настроить вышестоящую ветку, рассматриваются различные методы настройки вышестоящей ветки и дается подробное объяснение по теме.
Шаг 13. Удаление Git Remote
Git Remote — это подключение к репозиторию, размещенному на удаленном сервере — GitHub, BitBucket, GitLab или любом другом удаленном месте.
Однако со временем удаленный репозиторий может переместиться на другой хост, или член команды может перестать работать над проектом. Тогда рассматриваемый пульт больше не нужен.
Есть несколько способов удалить удаленный Git. Один из способов — удалить пульт с помощью командной строки. Синтаксис:
git remote remove [remote name]
В следующем примере запуск git remote -v
показывает доступные удаленные устройства, ‘origin’ и ‘test-remote’. После удаления «test-remote» и повторного запуска git remote -v
для получения списка доступных пультов мы видим, что единственным доступным пультом является «origin».
Шаг 14: Слияние Git
Git merge объединяет нескольких последовательностей коммитов в один коммит . Он может объединять две ветви, тем самым объединяя независимые линии разработки в одну ветвь.
После слияния двух ветвей Git обновляет текущую ветвь, чтобы отразить слияние, но целевая ветвь не затрагивается. Это означает, что вы должны использовать команду git branch -d
для удаления устаревшей целевой ветки.
Например, вы можете объединить новую ветку с основной веткой. Выполните следующие шаги:
1. Запустите команду git status
, чтобы убедиться, что HEAD указывает на правильную принимающую (главную) ветвь слияния. Если это не так, запустите git checkout master
, чтобы переключиться на ветку master.
2. Запустите git fetch
, чтобы получить последние удаленные коммиты, и git pull
, чтобы обеспечить наличие последних обновлений в основной ветке.
3. Запустите git merge X
, где X
— это имя ветки, которую вы хотите объединить с веткой-получателем.
Шаг 15. Разрешение конфликтов слияния
Конфликты слияния обычно возникают, когда несколько разработчиков работают над одним и тем же кодом проекта или когда они работают с несколькими ветвями разработки. Git merge предупреждает пользователя об этих конфликтах.
Хотя большинство конфликтов слияния разрешается автоматически , бывают случаи, когда git merge не может решить проблему .
Примечание: Наше подробное руководство по разрешению конфликтов слияния в Git предлагает советы по предотвращению конфликтов слияния, а также способы разрешения существующих конфликтов слияния.
Шаг 16. Создайте запрос на вытягивание
Создайте запрос на вытягивание (PR), чтобы сообщить владельцу репозитория, что он должен проверить изменения, внесенные вами в его код. Затем владелец может одобрить запрос на включение и объединить изменения в основной репозиторий.
Если вы являетесь совладельцем или владельцем репозитория, вам не нужно создавать запросы на вытягивание для объединения ваших изменений. Тем не менее, вы все равно можете сделать это, чтобы отслеживать обновления функций и историю.
Для этого руководства мы создадим файл readme для нашего репозитория локально и сделаем запрос на вытягивание на GitHub, чтобы проиллюстрировать процесс.
Выполните следующие действия:
1. В Git Bash создайте пустой файл readme, запустив touch readme.md
.
2. Создайте и переключитесь на новую ветку, в которой нужно изменить файл. Запустите:
git checkout -b create-readme-file
3. Откройте файл readme в текстовом редакторе и добавьте текст, который вы хотите, чтобы он содержал. В этом примере мы будем использовать текстовый редактор Nano для изменения файла в окне командной строки. Выполнить nano readme.md
.
4. После сохранения файла отследите его, запустив git add readme.md
.
5. Создайте коммит.
git commit -m «Добавлен файл readme»
6. Отправьте изменения на GitHub.
git push origin create-readme-file
7. Войдите на свою страницу GitHub. Теперь в вашем репозитории есть опция Create pull request с именем ветки, которое мы создали в командной строке. Нажмите Кнопка сравнения и запроса на вытягивание .
8. GitHub указывает, можете ли вы объединить ветки и применить изменения. При желании добавьте комментарий к вашему запросу на вытягивание и нажмите Создать запрос на вытягивание.
Теперь владелец репозитория, в данном случае вы, может просмотреть изменения и принять или отклонить их.
Вы можете принять изменения на вкладке запросов на вытягивание на GitHub. При объединении веток удалите устаревшую ветку, нажав Удалить ветку , чтобы сохранить репозиторий в чистоте.
Шаг 17. Синхронизируйте изменения на GitHub и локально
Когда вы объединяете изменения на GitHub, они не появляются автоматически в вашем локальном репозитории. Вы должны загрузить изменения в свой локальный репозиторий, чтобы увидеть обновления.
Синхронизируйте свой локальный репозиторий с GitHub, выполнив:
git pull origin master
Команда обновляет ваш локальный репозиторий, чтобы он соответствовал репозиторию на GitHub, и сообщает об изменениях.
В следующем примере мы сначала переключились на нашу основную ветку, и Git предупредил нас, что мы должны обновить наш локальный репозиторий:
Заключение
Теперь вы знаете основные и некоторые дополнительные функции Git. Не стесняйтесь протестировать их, чтобы убедиться, что вы понимаете, как они работают.
Загрузите нашу памятку по командам Git, чтобы иметь все команды Git в одном месте для будущего использования.
Git — gittutorial Documentation
НАЗВАНИЕ
gittutorial — Введение в Git внести в него изменения и поделиться изменениями с другими разработчиками.
Если вы в первую очередь заинтересованы в использовании Git для загрузки проекта, например, чтобы протестировать последнюю версию, вы можете начать с первые две главы Руководства пользователя Git.
Во-первых, обратите внимание, что вы можете получить документацию для такой команды, как git log --graph
с:
$ man git-log
или:
$ git help log
С последним вы можете использовать средство ручного просмотра по вашему выбору; видеть git-help[1] для получения дополнительной информации.
Рекомендуется представиться Git своим именем и общедоступный адрес электронной почты перед выполнением каких-либо операций. Самый легкий способ сделать это:
$ git config --global user. name "Ваше имя здесь" $ git config --global user.email [email protected]
Импорт нового проекта
Предположим, у вас есть tar-архив project.tar.gz с вашей первоначальной работой. Ты можно поместить его под контроль версий Git следующим образом.
$ tar xzf проект.tar.gz $ компакт-диск проект $ гит инициализация
Git ответит
Инициализирован пустой репозиторий Git в .git/
Теперь вы инициализировали рабочий каталог — вы можете заметить новый созданный каталог с именем «.git».
Затем скажите Git сделать снимок содержимого всех файлов в текущий каталог (обратите внимание на . ), с git add :
$ git add .
Этот моментальный снимок теперь хранится во временной промежуточной области, которую Git вызывает «индекс». Вы можете постоянно хранить содержимое указателя в репозиторий с git commit :
$ git commit
Вам будет предложено ввести сообщение фиксации. Теперь вы сохранили первый версия вашего проекта в Git.
Внесение изменений
Измените некоторые файлы, затем добавьте их обновленное содержимое в индекс:
$ git add файл1 файл2 файл3
Теперь вы готовы к фиксации. Вы можете видеть, что должно быть совершено используя git diff с параметром —cached:
$ git diff --cached
(без —cached, git diff покажет вам все изменения, которые вы сделали, но еще не добавили в индекс.) Вы также можете получить краткую сводка ситуации с git status :
$ git status На мастере ветки Изменения, которые необходимо зафиксировать: Ваша ветка обновлена до «origin/master». (используйте "git restore --staged...", чтобы отменить постановку) изменено: файл1 изменено: файл2 изменено: file3
Если вам нужно внести какие-либо дополнительные корректировки, сделайте это сейчас, а затем добавьте вновь измененный контент в index. Наконец, зафиксируйте свои изменения с помощью:
$ git commit
Это снова предложит вам сообщение с описанием изменения, а затем записать новую версию проекта.
В качестве альтернативы, вместо предварительного запуска git add , вы можете использовать
$ git commit -a
, который автоматически заметит любые измененные (но не новые) файлы, добавьте их в индекс и зафиксировать, все за один шаг.
Примечание к сообщениям фиксации: хотя это и не обязательно, рекомендуется начинайте сообщение коммита с одного короткого (менее 50 символов) строка, обобщающая изменение, за которой следует пустая строка, а затем еще тщательное описание. Текст до первой пустой строки в коммите сообщение рассматривается как заголовок коммита, и этот заголовок используется по всему Гит. Например, git-format-patch[1] превращает зафиксировать в электронной почте, и он использует заголовок в строке темы и остальная часть фиксации в теле.
Git отслеживает содержимое, а не файлы
Многие системы контроля версий предоставляют команду add
, которая сообщает
система, чтобы начать отслеживать изменения в новом файле. Команда Git добавить
делает что-то более простое и мощное: git add используется как для новых
и недавно измененные файлы, и в обоих случаях делается снимок
заданные файлы и этапы, содержащиеся в индексе, готовые к включению в
следующий коммит.
Просмотр истории проекта
В любой момент вы можете просмотреть историю ваших изменений, используя
$ git log
Если вы также хотите видеть полные различия на каждом этапе, используйте
$ git log -p
Часто обзор изменений полезно, чтобы почувствовать каждый шаг
$ git log --stat --summary
Управление ветвями
Один репозиторий Git может поддерживать несколько ветвей разработка. Чтобы создать новую ветку с именем «экспериментальная», используйте
$ git ветка экспериментальная 9.0105Если вы сейчас запустите
$ git branch, вы получите список всех существующих веток:
Experimental * master«Экспериментальная» ветвь — это та, которую вы только что создали, а Ветка «master» — это ветка по умолчанию, которая была создана для вас. автоматически. Звездочка отмечает ветку, в которой вы сейчас находитесь; введите
$ git switch Experimental, чтобы переключиться на экспериментальную ветку. Теперь отредактируйте файл, зафиксируйте изменить и вернуться к основной ветке:
(редактировать файл) $ git совершить -а $ git switch masterУбедитесь, что сделанное вами изменение больше не видно, так как оно было сделано на экспериментальной ветке, и вы вернулись на основную ветку.
Вы можете внести другое изменение в основную ветку:
(редактировать файл) $ git commit -aна данный момент две ветки разошлись с разными изменениями сделано в каждом. Чтобы объединить изменения, сделанные в экспериментальном файле, с основным, запустите
$ git merge ExperimentЕсли изменения не конфликтуют, все готово. Если есть конфликты, в проблемных файлах останутся маркеры, указывающие на конфликт;
$ git diffпокажет это. После того, как вы отредактировали файлы, чтобы решить проблему конфликты,
$ git commit -aзафиксирует результат слияния. Наконец,
$ gitkпокажет красивое графическое представление результирующей истории.
На этом этапе вы можете удалить экспериментальную ветку с
$ git branch -d ExperimentЭта команда гарантирует, что изменения в экспериментальной ветке уже в текущей ветке.
Если развивать на ветке бред-идею, то пожалеть всегда можно удалить ветку с
$ git branch -D Crazy-ideaВетки дешевы и просты, так что это хороший способ попробовать что-нибудь вне.
Использование Git для совместной работы
Предположим, Алиса начала новый проект с репозиторием Git в /home/alice/project, и тот Боб, у которого есть домашний каталог на такая же машина, хочет внести свой вклад.
Боб начинает с:
bob$ git clone /home/alice/project myrepoЭто создает новый каталог «myrepo», содержащий клон Алисы репозиторий. Клон наравне с оригиналом проект, обладающий собственной копией оригинальной истории проекта.
Затем Боб вносит некоторые изменения и фиксирует их:
(редактирование файлов) bob$ git commit -a (при необходимости повторить)Когда он будет готов, он скажет Алисе извлечь изменения из репозитория. в /home/bob/myrepo. Она делает это с:
alice$ cd /home/alice/project alice$ git pull /home/bob/myrepo masterЭто объединяет изменения из ветки «master» Боба в ветку Алисы. текущая ветка. Если Алиса за это время внесла свои изменения, тогда ей может потребоваться вручную исправить любые конфликты.
Таким образом, команда "pull" выполняет две операции: извлекает изменения из удаленной ветки, а затем объединяет их в текущую ветку.
Обратите внимание, что обычно Алиса хотела бы, чтобы ее локальные изменения были зафиксированы до инициируя эту «тягу». Если работа Боба противоречит тому, что Алиса делала после их истории разветвляются, Алиса будет использовать свое рабочее дерево и индекс для разрешать конфликты, а существующие локальные изменения будут мешать процесс разрешения конфликтов (Git по-прежнему будет выполнять выборку, но отказаться от слияния — Алисе придется избавиться от своих локальных изменений в каким-то образом и снова потяните, когда это произойдет).
Алиса может посмотреть, что сделал Боб, без предварительного слияния, используя "выборку" команда; это позволяет Алисе проверить, что сделал Боб, используя специальный символ "FETCH_HEAD", чтобы определить, есть ли у него что-нибудь стоящее потянув, вот так:
alice$ git fetch /home/bob/myrepo master alice$ git log -p HEAD..FETCH_HEADЭта операция безопасна, даже если Алиса имеет незафиксированные локальные изменения. Обозначение диапазона «HEAD..FETCH_HEAD» означает «показать все, что доступно из FETCH_HEAD, но исключите все, что доступно из HEAD". Алиса уже знает все, что приводит к ее текущему состоянию (ГОЛОВУ), и просматривает то, что у Боба есть в его состоянии (FETCH_HEAD), чего у нее нет. видел с этой командой.
Если Алиса хочет представить, что делал Боб с тех пор, как их истории разветвились она может выполнить следующую команду:
$ gitk HEAD..FETCH_HEADЗдесь используется то же обозначение диапазона с двумя точками, которое мы видели ранее с git log .
Алиса может захотеть посмотреть, что они оба сделали с момента разветвления. Она может использовать форму с тремя точками вместо формы с двумя точками:
$ gitk HEAD...FETCH_HEADисключить все, что достижимо из них обоих».
Обратите внимание, что эти обозначения диапазона можно использовать как с gitk, и "журнал git".
После проверки того, что сделал Боб, если нет ничего срочного, Алиса может решить продолжить работу, не дёргая Боба. Если история Боба есть что-то, что Алисе нужно немедленно, Алиса может выбрать сначала спрячьте ее незавершенную работу, сделайте «вытягивание», а затем, наконец, расчехлите ее незавершенная работа поверх полученной истории.
Когда вы работаете в небольшой тесно сплоченной группе, это не непривычно взаимодействовать с одним и тем же хранилищем снова и снова опять таки. По определению удаленный репозиторий , вы можете сделать это проще:
alice$ git remote add bob /home/bob/myrepoС этим Алиса может выполнить первую часть операции «вытягивания» в одиночку, используя команду git fetch , не объединяя их со своей ветка, используя:
alice$ git fetch bobВ отличие от полной формы, когда Алиса получает от Боба, используя удаленный репозиторий, настроенный с помощью git remote , что было fetched хранится в ветке удаленного отслеживания, в данном случае
боб/мастер
. Итак, после этого:alice$ git log -p master..bob/masterпоказывает список всех изменений, которые Боб сделал с тех пор, как он отделился от Основная ветвь Алисы.
Изучив эти изменения, Алиса может объединить изменения в свою основную ветку:
alice$ git merge bob/masterЭто
слияние
также может быть выполнено путем извлечения из ее собственного удаленного отслеживания ветка , например:alice$ git pull . пульты/боб/мастерОбратите внимание, что git pull всегда объединяется с текущей веткой, независимо от того, что еще указано в командной строке.
Позже Боб может обновить свой репозиторий последними изменениями Алисы, используя
bob$ git pullОбратите внимание, что ему не нужно указывать путь к репозиторию Алисы; когда Боб клонировал репозиторий Алисы, Git сохранил ее местоположение. репозиторий в конфигурации репозитория, и это местоположение используется для получения:
bob$ git config --get remote. origin.url /дом/алиса/проект(Полная конфигурация, созданная клоном git , видна с помощью
git config -l
и справочная страница git-config[1] объясняет значение каждой опции.)Git также хранит нетронутую копию ветки master Алисы под name "origin/master":
bob$ git branch -r origin/masterЕсли позже Боб решит работать с другого хоста, он все равно сможет выполнять клонирование и извлечение по протоколу ssh:
bob$ git clone alice.org:/home/alice/project myrepoВ качестве альтернативы Git имеет собственный протокол или может использовать http; подробности см. в git-pull[1].
Git также можно использовать в режиме, подобном CVS, с центральным репозиторием в которые различные пользователи вносят изменения; см. git-push[1] и gitcvs-миграция[7].
Изучение истории
История Git представлена в виде серии взаимосвязанных коммитов. Мы уже видели, что команда git log может перечислить эти коммиты. Обратите внимание, что в первой строке каждой записи журнала git также указывается имя зафиксировать:
$ журнал git зафиксировать c82a22c39cbc32576f64f5c6b3f24b99ea8149c7 Автор: Junio C HamanoДата: вторник, 16 мая, 17:18:22 2006 -07:00 merge-base: Уточнить комментарии к постобработке. Мы можем дать это имя git show , чтобы увидеть подробности об этом совершить.
$ git show c82a22c39cbc32576f64f5c6b3f24b99ea8149c7Но есть и другие способы ссылаться на коммиты. Вы можете использовать любой начальный часть имени, достаточно длинная, чтобы однозначно идентифицировать фиксацию: 92 # показать второго родителя HEAD
Вы также можете дать своим коммитам имена; после запуска
$ git tag v2.5 1b2e1d63ff
вы можете ссылаться на 1b2e1d63ff по имени «v2.5». Если вы собираетесь поделиться этим именем с другими людьми (например, чтобы идентифицировать выпуск версия), вы должны создать объект «тег» и, возможно, подписать его; видеть git-tag[1] для подробностей.
Будьте осторожны с этой последней командой: помимо потери любых изменений в рабочем каталоге, он также удалит все последующие коммиты из эта ветка. Если эта ветвь является единственной ветвью, содержащей те совершает, они будут потеряны. Кроме того, не используйте git reset на общедоступная ветка, из которой берутся другие разработчики, так как она заставить ненужные слияния на других разработчиков, чтобы очистить историю. Если вам нужно отменить внесенные вами изменения, используйте git revert . вместо.
Команда git grep может искать строки в любой версии вашего проект, поэтому
$ git grep "hello" v2.5
ищет все вхождения «hello» в v2.5.
Если вы не укажете имя коммита, git grep будет искать любой из файлы, которыми он управляет в вашем текущем каталоге. Итак,
$ git grep "hello"
— это быстрый способ поиска только тех файлов, которые отслеживаются Git.
Многие команды Git также принимают наборы коммитов, которые можно указать несколькими способами. Вот несколько примеров с git log :
$ git log v2.5..v2.6 # коммиты между версиями 2.5 и 2.6 $ git log v2.5.. # фиксирует, начиная с версии 2.5 $ git log --since="2 days ago" # коммиты за последние 2 недели $ git log v2.5.. Makefile # фиксирует, начиная с версии 2.5, которые изменяют # Makefile
Вы также можете указать git log «диапазон» коммитов, где первый не обязательно предок второго; например, если кончики ветви «стабильная» и «хозяин» расходились от общего совершить какое-то время назад, то
$ git log stable..master
перечислит коммиты, сделанные в ветке master, но не в ветке стабильная ветка, а
$ git log master..stable
покажет список коммитов, сделанных в стабильной ветке, но не основная ветвь.
Команда git log имеет недостаток: она должна представлять коммиты в список. Когда в истории есть линии развития, которые расходятся и затем снова объединены, порядок, в котором git log представляет эти коммиты бессмысленны.
Большинство проектов с несколькими участниками (например, ядро Linux, или сам Git) имеют частые слияния, а gitk лучше справляется с визуализация их истории. Например,
$ gitk --since="2 days ago" drivers/
позволяет просматривать любые коммиты за последние 2 недели коммитов. который изменил файлы в каталоге «драйверы». (Примечание: вы можете настройте шрифты gitk, удерживая нажатой клавишу управления, одновременно нажимая «-» или «+».)
Наконец, большинство команд, принимающих имена файлов, дополнительно позволяют предшествовать любому имени файла фиксацией, чтобы указать конкретную версию файла:
$ git diff v2.5:Makefile HEAD:Makefile.in
Вы также можете использовать git show для просмотра любого такого файла:
$ git show v2.5:Makefile
Следующие шаги
достаточно для выполнения базовой распределенной ревизии контроль над вашими проектами. Однако для полного понимания глубины и сила Git вам нужно понять две простые идеи, на которых базируется:
База данных объектов — довольно элегантная система, используемая для хранить историю вашего проекта — файлы, каталоги и совершает.
Индексный файл представляет собой кэш состояния дерева каталогов, используется для создания коммитов, проверки рабочих каталогов и держите различные деревья, участвующие в слиянии.
Вторая часть этого руководства объясняет объект базу данных, индексный файл и некоторые другие мелочи, которые вам понадобятся. нужно максимально использовать Git. Вы можете найти его на gittutorial-2[7].
Если вы не хотите продолжать с этим сразу, несколько других отступления, которые могут быть интересны в этом месте:
git-format-patch[1], git-am[1]: они конвертируют серии коммитов git в патчи, отправленные по электронной почте, и наоборот, полезно для таких проектов, как ядро Linux, которые сильно зависят на патчах, отправленных по электронной почте.
git-bisect[1]: когда в вашем проект, один из способов отследить ошибку — выполнить поиск по историю, чтобы найти точный коммит, который виноват. Git пополам может помочь вам выполнить бинарный поиск для этой фиксации. это достаточно умен, чтобы выполнять поиск, близкий к оптимальному, даже в случай сложной нелинейной истории с большим количеством слившихся ветвей.
gitworkflows[7]: дает обзор рекомендуемых рабочие процессы.
giteveryday[7]: Git на каждый день с примерно 20 командами.
gitcvs-migration[7]: Git для пользователей CVS.
СМОТРИТЕ ТАКЖЕ
gittutorial-2[7], gitcvs-миграция[7], gitcore-учебник [7], гитглоссарий[7], git-помощь [1], gitworkflows[7], giteveryday[7], Руководство пользователя Git
GIT
Часть пакета git[1]
Основные команды Git — как использовать Git в реальном проекте
В моем предыдущем руководстве мы говорили о том, что такое контроль версий, как работают Git и GitHub и как настроить учетную запись в GitHub.
Сегодня мы рассмотрим, как использовать некоторые основные команды Git в реальном проекте.
Я создал простой проект, который мы будем использовать в этом уроке.
Интерфейс проектаИзучив это руководство, вы узнаете, как:
- Создать репозиторий в GitHub
- Инициализировать Git в своем проекте
- Добавить и зафиксировать свой проект
- Отправить проект на GitHub
- Добавить и удалить файл из репозитория
Как создать репозиторий в Github 900 Я построил пример проекта выше, используя HTML и CSS. Чтобы инициализировать Git для проекта, мне нужно будет создать новый репозиторий в моей учетной записи GitHub.
Я могу сделать это, войдя в свою учетную запись, а затем нажав на новая кнопка
расположена в правом верхнем углу экрана. Когда он откроется, я введу имя своего репозитория, описание, а затем выберу, хочу ли я, чтобы мой проект был доступен публично или в частном порядке. Затем я нажму «Создать репозиторий».
Как инициализировать Git
Мы не можем использовать Git в нашем проекте, если мы не инициализируем/запускаем его сначала с помощью команды git init
.
Итак, после создания репозитория в GitHub я открою проект в своем редакторе кода VS, перейду к своему терминалу, а затем воспользуюсь git init
команда для инициализации/запуска.
Когда вы запустите эту команду в своем терминале, вы заметите некоторые изменения цвета в вашем проекте. Вы также увидите символ U
, который означает, что ваши файлы не отслеживаются.
Кроме того, когда вы открываете папку, в которой хранится/находится ваш проект, вы увидите еще одну папку с именем .git
, которая была автоматически создана при выполнении команды git init
.
Как добавить и зафиксировать свой проект
Как использовать команду
git add
Добавление проекта в промежуточную область помогает Git отслеживать ваш проект и видеть внесенные вами изменения.
Чтобы добавить проект в тестовую область, запустите команду git add . Команда
. Когда вы запустите эту команду, вы увидите, что символ U
автоматически изменится на A
. Это означает, что ваши файлы были добавлены в промежуточную область и теперь отслеживаются Git, ожидая фиксации.
Как использовать команду
git commit
Выполняя команду git commit
, вы сохраняете этот конкретный этап и изменения вашего проекта навсегда в репозитории Git. И хотя в будущем вы можете внести несколько изменений в проект и зафиксировать их, эта конкретная фиксация, которую вы сделали сейчас, все равно будет сохранена в репозитории Git, и к ней можно будет получить доступ в любое время.
Итак, после того, как ваш проект был добавлен в промежуточную область, следующее, что вам нужно сделать, это зафиксировать его с помощью git commit –m «первая фиксация»
команда.
При запуске этой команды вы должны заметить, что символа A
в проекте больше нет, и проект снова выглядит так, как вы ожидаете.
Как отправить проект на GitHub
Отправка проекта на Github помогает предотвратить его повреждение или потерю в локальном хранилище. Он также позволяет вам свободно получать доступ к репозиторию GitHub из любого места и с любого компьютера (не обязательно с вашего персонального компьютера).
Чтобы иметь возможность отправить свой проект в репозиторий GitHub, вам нужно сначала добавить удаленный репозиторий, который вы создали в GitHub.
Для этого вы будете использовать команду git remote add origin (имя репозитория)
. В моем случае имя моего репозитория — https://github.com/Derekvibe/FoodResturant.git
. Запись в терминале должна выглядеть так:
git remote add origin https://github.com/Derekvibe/FoodResturant.git
Если вы не уверены в текущей ветке, над которой работаете, использовать git ветка
команда. Если он отображает ветку как master
, мы изменим ее на ветку main
, выполнив команду git branch –M main
.
В моем случае я уже настроил ветку по умолчанию на ветку main
, когда устанавливал Git на свой компьютер, выполнив команду git config –global init. default branch main
. Поэтому мне не нужно снова запускать команду git branch –M main
.
Наконец, после добавления удаленного репозитория, в который вы хотите загрузить проект, и изменения ветки на main
, вы захотите отправить свой проект на GitHub.
Для этого выполните команду git push –u origin main
и дождитесь ее полной загрузки.
Когда это будет сделано, перейдите в репозиторий Git, который вы создали в GitHub, и обновите страницу. Вы увидите, что все ваши проекты в локальном репозитории были загружены в репозиторий GitHub.
С этого момента после внесения изменений в проект вам просто нужно добавить изменения в область подготовки, запустив git add . Команда
. Затем вы можете зафиксировать его с помощью git commit –m «(имя фиксации)»
и отправить его в репозиторий Git с помощью git push –u origin main
.
Как добавить и удалить файл из репозитория
На этом этапе я покажу вам, как добавлять и удалять новый файл в репозиторий GitHub.
Как добавить новый файл в существующий репозиторий
Напомним: я добавил в свой проект новый файл с именем newfile.txt
. Я добавил его в тестовую область, запустив git add newfile.txt
, затем зафиксировал его с помощью git commit –m «new commit»
и отправил его на GitHub, как мы делали, когда хотели загрузить весь проект на GitHub. .
Когда я обновил свою страницу GitHub, я должен увидеть новый файл, который я создал.
Как удалить файл из существующего репозитория
Если я хочу удалить только что созданный файл из моего проекта в GitHub, я могу сделать это, выполнив команду git rm newfile.txt
в терминале.
Когда я запускаю эту команду в своем терминале, я добавляю изменения в промежуточную область, используя git add .
, а затем зафиксируйте и отправьте изменения в репозиторий GitHub.
Когда я обновлю свою страницу GitHub, файл будет удален из моего репозитория GitHub. Кроме того, когда я захожу в свое локальное хранилище, файл также должен быть удален оттуда.
Заключение
Из этого руководства вы узнали, как использовать основные команды Git для управления вашими проектами.
Нажмите здесь, чтобы получить доступ к моему репозиторию GitHub для этого проекта, чтобы вы могли попробовать его самостоятельно.
Надеюсь, этот урок был вам полезен.
Получайте удовольствие от программирования!
Научитесь программировать бесплатно. Учебная программа freeCodeCamp с открытым исходным кодом помогла более чем 40 000 человек получить работу в качестве разработчиков. Начать
Как использовать Git и GitHub в команде как профессионал — с участием Гарри и Гермионы 🧙
В этом руководстве вы узнаете, как работать в команде с центральным репозиторием на GitHub. Вы будете работать над проблемами, фиксациями, запросами на включение, проверками кода и многим другим.
Я не считаю себя экспертом по Git, но я многому научился в нем за первый месяц работы разработчиком программного обеспечения.
Я написал это руководство, чтобы рассказать, как Git используется в профессиональной среде. Имейте в виду, что не существует единственного способа использования Git — так что это всего лишь один подход, и он может отличаться от того, что вы видите в своей профессиональной карьере.
Чтобы начать работу с рабочими процессами Git, рекомендуется ознакомиться с этим учебным пособием по сравнению рабочих процессов.
ПроектГарри и Гермионе пришла в голову отличная идея создать приложение SaaS, позволяющее людям создавать свои собственные зелья онлайн и делиться ими с остальным миром. Они назвали его Potionfy , и это будет их первый запуск.
Они решили использовать GitHub в качестве центрального репозитория, в котором будет храниться вся их работа. В качестве стека технологий для приложений они выбрали React и Ruby on Rails.
КомандаЗельеварение будет создано самими Гарри и Гермионой на их сбережения. Они будут работать в своем домашнем гараже и ожидают, что MVP будет готов через 4 недели.
Давайте посмотрим, как они будут работать вместе над созданием продукта SaaS, и какие препятствия им придется преодолеть при этом.
Первоначальная настройка проектаВ этом проекте будут задействованы два вымышленных члена команды — Гарри и Гермиона — с двумя отдельными учетными записями GitHub. Поэтому вы можете начать создавать две учетные записи на GitHub для этого.
Бонус: для упрощения, если у вас есть учетная запись Gmail, вы можете использовать свой адрес Gmail с плюсом и строкой после первой его части, и все сообщения электронной почты будут централизованы в одной учетной записи, например:
мой_адрес_электронной_почты[email protected] мой_адрес_электронной_почты+hermione@gmail. com
Подробнее об этом здесь.
Шаг 1. Как создать две разные учетные записи GitHub
Чтобы следовать этому руководству, вам понадобятся две разные учетные записи GitHub. Я решил создать два, но вы можете просто использовать свой собственный и создать еще один. Вот как выглядит моя установка:
Шаг 2: Как настроить локальную среду разработки
Мы собираемся использовать локальную среду разработки и установить в ней Git. Я решил использовать виртуальную машину под управлением Linux, но вы можете использовать свою собственную среду (я просто хочу избежать каких-либо проблем с конфигурацией Git).
Мы должны убедиться, что Git установлен в нашей системе:
git --version
Эта команда должна вернуть версию Git, установленную в вашей системе. В моем случае в моем виртуальном Ubuntu он не был установлен, поэтому я запустил:
sudo apt установить git
Шаг 3: рекомендации по совместной работе
Гарри будет работать локально в нашей среде разработки, а Гермиона выберет работу непосредственно на GitHub, используя онлайн-код VSCode (подробнее об этом позже).
С чего начать работу над проектомШаг 1: Как создать репозиторий и собрать команду (бесплатно)
Гермиона — лидер команды, так как она более опытна в программировании, поэтому она решил создать новый репозиторий для размещения кода продукта SaaS.
Чтобы создать репозиторий, она просто воспользовалась веб-интерфейсом GitHub и щелкнула вкладку Репозитории
, а затем кнопку Новый
. Она назвала репозиторий potionfy
и добавила краткое описание и файл Readme.md
.
После создания хранилища она пригласила Гарри поработать над ним. Для этого она щелкнула вкладку Настройки
в репозитории potionfy
, затем в Управление доступом
и, наконец, кнопка Добавить людей
.
Введя имя пользователя Гарри на GitHub (или адрес электронной почты) во всплывающем окне и нажав Добавить Гарри(...) в этот репозиторий
, ей удалось отправить приглашение Гарри.
Через пару секунд Гарри получил приглашение на свою электронную почту:
Он принял его, и тем самым оба члена команды были готовы начать работу над своим проектом.
ПРИМЕЧАНИЕ: В случае, если ссылка-приглашение не работает (как в моем случае), Гарри необходимо перейти в профиль Гермионы на GitHub, нажать на значок репозиторий potionfy
и примите приглашение:
Шаг 2: Как создать файл
Гермиона начала проект с создания начального файла, который будет использовать продукт Potionfy SaaS: index.html
.
Для этого она создала файл с помощью веб-интерфейса GitHub, расположившись в репозитории и нажав кнопки Добавить файл
> Создать новый файл
.
Затем она добавила имя файла, его содержимое и осмысленное сообщение фиксации. После нажатия на Кнопка Commit new file
, файл создан в репозитории.
Шаг 3: Как создать проблему и работать над ней
Гермионе нужно заняться маркетингом, связанным с запуском Potionfy, поэтому она попросила Гарри добавить простое посадочное сообщение в файл index. html
. Итак, она приступила к созданию проблемы в репозитории, щелкнув вкладку Проблемы
и нажав кнопку Новая проблема
.
После того, как выпуск был создан, Гарри просмотрел его (также перейдя на Issues
вкладку в репозитории Potionfy) и дайте знать Гермионе, что он будет работать над этим, оставив комментарий и назначив проблему себе.
Работая с этой динамикой, команда будет знать, кто над чем работает.
Шаг 4: Как настроить локальную среду разработки
Чтобы работать с файлом проекта index.html
, Гарри решил работать локально, поэтому ему нужно было клонировать репозиторий potionfy
в своей среде разработки ( виртуальная машина Linux).
Первое, что ему нужно было сделать, это настроить ключи SSH для работы с GitHub. Он следил за созданием нового ключа SSH на GitHub и добавлял его в руководство по ssh-agent. Затем он добавил ключ в свою учетную запись GitHub, следуя руководству по добавлению нового ключа SSH в учетную запись GitHub.
Затем Гарри открыл репозиторий Гермионы на GitHub и скопировал ссылку для его клонирования:
Теперь в своей локальной среде разработки он создал новый каталог, в котором будет централизована вся его работа:
$ mkdir ~/разработка $ cd ~/разработка
Наконец, он клонировал репозиторий, набрав git clone
и вставив код, который он только что скопировал с GitHub (это адрес репозитория ):
$ git clone [email protected]:Hermione-Colo- Коды /potionfy.git
Таким образом, у него теперь есть локальная копия репозитория, и он готов начать работу над ней.
$ ll всего 12 drwxrwxr-x 3 параллели параллели 4096 17 ноября 07:34 ./ drwxr-xr-x 23 параллели параллели 4096 ноя 17 07:33 ../ drwxrwxr-x 3 parallels parallels 4096 17 ноября 07:34 potionfy/
Рабочий процесс GitHub
Для работы с репозиторием GitHub рекомендует следующий рабочий процесс:
- Создать ветку
- Внести изменения
- Создать запрос на вытягивание
- Просмотр комментариев 9003 9003 Удалить свой филиал
Для получения дополнительной информации об этом вы можете прочитать этот документ.
Шаг 1. Создание ветки
Поскольку не рекомендуется работать непосредственно над главной веткой, Гарри создал новую ветку, связанную с проблемой, над которой он будет работать.
Он решил сделать это в репозитории GitHub, но он мог сделать то же самое в своей локальной среде с помощью команд Git.
Он выбрал осмысленное имя и поставил перед ним номер соответствующей проблемы (в данном случае это 1
).
Дополнительную информацию о том, как создать ветку на GitHub, можно найти здесь.
Шаг 2: Локальная работа над веткой
После создания ветки Гарри начал над ней работать.
git pull
Первое, что он сделал, это pull
всего репозитория, чтобы увидеть ветку в своей локальной среде разработки.
~/разработка/potionfy$ git тянуть Предупреждение: ключ хоста ECDSA для IP-адреса «13.237.44.5» навсегда добавлен в список известных хостов. Из github.com: Hermione-Colo-Codes/potionfy * [новая ветвь] 1-add-landing-message -> origin/1-add-landing-message Уже в курсе.
git checkout
Имея новую ветку в своей среде, он переключился на нее с помощью команды git checkout
. После этого он убедился, что работает в правильной ветке с помощью команды git branch
.
~/development/potionfy$ git checkout 1-add-landing-message Ветвь «1-add-landing-message» настроена для отслеживания удаленной ветки «1-add-landing-message» из «origin». Переключился на новую ветку «1-добавить-целевое-сообщение» ~/development/potionfy$ ветка git * 1-добавить целевое-сообщение главный
Решить проблему
Гарри начал работать над решением проблемы. Для этого он открыл файл index.html
и добавил к нему заголовок h2
.
После внесения изменений он увидел, как Git отреагировал на это изменение.
~/development/potionfy$ git статус На ветке 1-добавить посадочное-сообщение Ваша ветка обновлена с помощью «origin/1-add-landing-message». Изменения, не подготовленные для фиксации: (используйте "git add...", чтобы обновить то, что будет зафиксировано) (используйте «git restore ...», чтобы отменить изменения в рабочем каталоге) изменено: index.html в фиксацию не добавлено никаких изменений (используйте «git add» и/или «git commit -a») parallels@parallels-Parallels-Virtual-Platform:~/development/potionfy$
Затем он добавил файл в промежуточную область с помощью команды git add
и зафиксировал изменение с помощью команды git commit
.
~/development/potionfy$ git добавить -A ~/development/potionfy$ git commit -m "Добавить посадочное сообщение. #1" ~/development/potionfy$ статус git
Обратите внимание, что сообщение фиксации также включает идентификатор проблемы, который в данном случае #1
.
Отправка в репозиторий
Следующим шагом, который должен сделать Гарри, является отправка изменений в репозиторий.
~/разработка/potionfy$ git push
Создайте запрос на вытягивание
Затем Гарри нажал кнопку Сравнить и запрос на вытягивание
в репозитории GitHub (убедившись, что его ветка выбрана в раскрывающемся меню ветки слева).
Этот запрос на вытягивание будет проанализирован Гермионой, и она решит, можно ли его объединить с основной веткой или нет.
Краткий обзор
До этого момента в руководстве мы узнали, как Гарри и Гермиона решили создать приложение SaaS, позволяющее людям создавать свои собственные зелья онлайн и делиться ими с остальным миром. Они назвали это Зельеварение .
Гермиона создала удаленный репозиторий, затем задачу
для решения задачи по созданию целевой страницы, и как Гарри работал над этой проблемой
локально и создал запрос на включение
, когда закончил работу над ней.
Теперь мы увидим:
- как Гермиона просматривает код Гарри,
- как код объединяется в основной ветке,
- решение об использовании ветки
разработки
, - как команда работает в ветке разработки и объединяет изменения в основную,
- и как команда решает конфликты слияния.
Шаг 1. Как создать проверку кода
Гермиона закончила свои маркетинговые и рекламные задачи, и теперь у нее есть время просмотреть код Гарри.
Для этого она открывает репозиторий GitHub и щелкает вкладку Запросы на включение
, чтобы найти запрос на вытягивание Гарри.
Нажав на нее, она затем нажимает на вкладку Commits
и, наконец, на последнюю фиксацию Гарри (это всего лишь один из способов доступа к файлам, измененным в запросе на вытягивание).
Она не совсем уверена в коде , поэтому нажимает на значок плюса, который появляется, когда она наводит курсор на эту строку кода, и пишет комментарий Гарри. Наконец, она нажимает кнопку
Начать обзор
.
Поскольку у нее нет других комментариев по поводу кода, она нажимает на Обзор изменений
Кнопка, чтобы сделать обзор видимым для остальной части команды.
Дополнительную информацию о проведении обзоров можно найти в этой статье Обзор предлагаемых изменений в запросе на вытягивание.
Шаг 2: Как обратиться к обзору и создать изменение кода
Гарри проверяет свой запрос на включение и находит там новую беседу: обзор Гермионы.
Гарри отвечает на комментарий Гермионы и нажимает кнопку Разрешить разговор
.
Теперь, когда разговор решен, Гермиона может отправить отзыв, указав, что есть запрошенные изменения чтобы Гарри мог над ними поработать.
Примечание. — это всего лишь одна из версий процесса рецензирования в GitHub, и она может отличаться от фактического способа, который выберет ваша команда.
Гарри снова проверяет запрос на вытягивание и обнаруживает, что он содержит Запрошенных изменений
.
Шаг 3: Как внедрить изменения
Поскольку Гарри любит работать локально, он продолжает работу над созданной им веткой, чтобы внести изменения в код.
$ git checkout 1-добавить-целевое-сообщение
Убедившись, что он работает с правильной веткой, он вносит изменения в файл index. html
.
Примечание: для простоты мы не создаем здесь отдельный файл CSS.
После того, как Гарри закончит настройку кода, он инсценирует изменения, фиксирует их (не забудьте указать id
проблемы, потому что он все еще работает над ней) и отправляет их на GitHub.
$ git добавить -A $ git commit -m "Добавить цвет и удалить текст. #1" $ git толчок
Шаг 4: Как объединить запрос на включение
Теперь очередь Гермионы. Она обращается к пулл-реквесту и находит новый коммит: тот, который Гарри сделал и отправил на GitHub.
Затем она щелкает вкладку Файлы изменены
и находит те, которые она предложила внедрить в файл index.html
.
Поскольку она удовлетворена изменениями, она переходит к их утверждению, нажав кнопку Проверить изменения
и выбрав Утвердить 9вариант 0115.
Гарри видит, что Гермиона одобрила его запрос на включение, и приступает к его слиянию с основной веткой проекта.
Он решил не удалять ветку, так как хочет оставить ее там для дальнейшего использования (хотя удалить ее было бы неплохо).
Поскольку Гермиона удовлетворена решением проблемы, она закрывает ее, перейдя на вкладку Проблемы
и нажав кнопку Закрыть проблему
.
Если вы хотите увидеть графическое представление всего процесса до этого момента, вы можете нажать на кнопку Вкладка Insights
, а затем на вкладке Сеть
. Вы сможете увидеть, как выполнялись ветвление и слияние.
develop
в Git При работе с реальными проектами слияние изменений в основную ветку, как вы видели до этого момента, не рекомендуется.
Вместо того, чтобы работать напрямую с основным ответвлением
(часто называемым производственным
), вы будете работать с разработать филиал
. Вы будете разветвлять задачи из ветки разработки
и объединять их обратно в ветку разработки
.
После того, как группа проблем будет решена, эта ветка разработки
будет объединена с основной веткой
(или производство
), что обычно означает изменение версии в приложении.
Гермиона знает об этом, и теперь, когда целевая страница работает и доступна для клиентов, она решила сохранить этот производственная среда и работа над веткой разработки.
Для этого она создает ветку разработки
из основной ветки , чтобы они с Гарри могли работать в этой ветке, не влияя на производственную среду.
Гермиона хочет добавить новую функцию на целевую страницу: форму для сбора электронных писем клиентов. Для этого она создает новую задачу.
Как только задача создана, Гарри решает начать над ней работать. Для этого он ответвляется от ветки разработки
(путем выбора этой ветки в интерфейсе GitHub) новой ветки с именем 3-email-form
(включая номер проблемы в начале, чтобы было ясно, как эта ветвь будет относиться к Проблемы).
Затем он вытаскивает эту ветку локально и начинает над ней работать.
$ git тянуть $ git checkout 3-форма
Гарри решает включить простую форму в файл index.html
: