Работа с 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
— это алгоритм для генерации ключей. Если ваша система не поддерживает алгоритм
(и вы увидели ошибку), используйте немного другую команду с алгоритмом 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.
Открываем терминал и переходим в папку с будущим проектом — для этого используем команду
. Если вы хотите, чтобы проект лежал в папке 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 КиБ/с, готово.
Если вы видите ошибку Error: Permission denied (publickey)
, скорее всего, вы ошиблись в настройке SSH-ключа.
Кстати, если вы хотите, чтобы название папки с проектом у вас на компьютере отличалось от имени репозитория, можете дополнить команду клонирования, добавив в конце другое название:
git clone [email protected]:_your-nickname_/_your-project_.git folder_name
Теперь на вашем компьютере в папке your_project
или в той, название которой вы указали, находится полная копия репозитория c GitHub.
В каждом репозитории есть как минимум одна основная ветка, которую создаёт сам Git — она называется master
. Обычно в ней хранят проверенную версию программы без ошибок.
А если вы хотите исправить ошибку в коде или добавить что-то в проект, но не хотите сломать код в основной ветке, нужно создать новую ветку из 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 должен проверить администратор мастер-репозитория — это может быть коллега-разработчик, техлид или наставник на курсе.
git pull | Atlassian Git Tutorial
Команда git pull
используется для извлечения и загрузки содержимого из удаленного репозитория и немедленного обновления локального репозитория этим содержимым. Слияние удаленных вышестоящих изменений в локальный репозиторий — это обычная задача рабочего процесса, возникающая при совместной работе на основе системы Git. Команда
на самом деле представляет собой комбинацию двух других команд: git fetch
и git merge
. На первом этапе git pull
выполняется команда git fetch
, ограниченная локальной веткой, на которую указывает HEAD
. Сразу после загрузки содержимого команда git pull
выполняет слияние. Для слитого содержимого создается новый коммит, а указатель HEAD
Использование git pull
Порядок действий
Сначала команда git pull
запускает команду git fetch
для загрузки содержимого из указанного удаленного репозитория. Затем выполняется команда git merge
, объединяющая ссылки и указатели удаленного содержимого в новый локальный коммит слияния. Чтобы лучше продемонстрировать процесс извлечения и слияния, рассмотрим пример. Предположим, у нас есть репозиторий с главной веткой main и удаленный репозиторий origin.
В этом сценарии команда git pull
загрузит все изменения, начиная с того места, где разошлись локальная и главная ветки.
git pull
получит удаленные коммиты из отходящей ветки (т. е. точки A‑B‑C). Затем в процессе запуска команды pull будет создан новый локальный коммит слияния, включающий содержимое новых удаленных коммитов из отходящей ветки.На вышеприведенной схеме мы видим новый коммит H. Это коммит слияния, в который входит содержимое удаленных коммитов A‑B‑C и который имеет общее сообщение в журнале. Этот пример демонстрирует одну из нескольких стратегий слияния с помощью команды git pull
. Чтобы сделать перебазирование, а не коммит слитого содержимого, укажите для команды git pull
параметр --rebase
. В следующем примере демонстрируется, как работает перебазирование с помощью команды pull. Предположим, что мы находимся в начальной точке нашей первой схемы и выполнили команду git pull --rebase
.
На этой схеме видно, что при перебазировании с помощью команды pull не был создан новый коммит H. Вместо этого удаленные коммиты A‑B‑C были скопированы и добавлены в историю в локальной ветке origin/main перед локальными коммитами E–F–G с перезаписью последних.
Распространенные опции
git pull <remote>
Извлечь из указанного удаленного репозитория копию текущей ветки и немедленно слить ее с локальной копией. Эта команда аналогична команде git fetch
, после которой следует команда git merge origin/
.
git pull --no-commit <remote>
Подобно вызову по умолчанию, извлекает удаленное содержимое, но не создает новый коммит со слитым содержимым.
git pull --rebase <remote>
Аналогично предыдущей команде pull, только вместо команды git merge
для интеграции удаленной ветки с локальной веткой используется команда git rebase
.
git pull --verbose
Во время выполнения команды pull выдает подробный вывод о загружаемом содержимом и информацию о слиянии.
Обсуждение git pull
Команду git pull
можно представить как версию команды svn update
, только применимую в системе Git. Это простой способ синхронизировать локальный репозиторий с вышестоящими изменениями. На диаграмме ниже даны пояснения к каждому шагу процесса выполнения команды pull.
Сначала вы думаете, что ваш репозиторий синхронизирован, однако команда git fetch
показывает, что с момента последней проверки версия origin ветки main была изменена. Затем команда git merge
сразу интегрирует удаленную ветку main в локальную ветку.
Git pull и синхронизация
Команда git pull
— одна из множества команд, отвечающих за синхронизацию удаленного содержимого. Команда git remote
используется, чтобы указать, на каких удаленных конечных точках будут работать команды синхронизации. Команда git push
используется для выгрузки содержимого в удаленный репозиторий.
Команду git fetch
можно перепутать с командой git pull
. Обе они используются для загрузки удаленного содержимого, но при этом git pull
и git fetch
значительно различаются по уровню безопасности. Команду git fetch
можно считать «безопасным» вариантом, а git pull
— «небезопасным». Команда git fetch
загружает удаленное содержимое, но не изменяет состояние локального репозитория, в то время как git pull
загружает удаленное содержимое и сразу пытается изменить состояние локального репозитория, чтобы оно соответствовало этому содержимому. Это может привести к возникновению непредумышленного конфликта в локальном репозитории.
Сравнение pull и rebase
Параметр --rebase
можно использовать, чтобы сохранить линейную историю и избежать ненужных коммитов слияния. Многие разработчики предпочитают выполнять перебазирование, а не слияние, как бы заявляя: «Я хочу, чтобы мои изменения добавились поверх всех остальных». В этом смысле команда git pull
с флагом --rebase
больше похожа на команду svn update
, чем на простую команду git pull
.
На самом деле команда pull с опцией --rebase
используется в рабочем процессе настолько часто, что для нее существует выделенная опция конфигурации:
git config --global branch. autosetuprebase always
После выполнения этой команды все команды git pull
будут интегрироваться с помощью команды git rebase
, а не git merge
.
Примеры использования git pull
В нижеприведенных примерах показано, как использовать команду git pull
в общих сценариях.
Поведение по умолчанию
git pull
Вызов команды git pull
по умолчанию эквивалентен выполнению команд git fetch origin HEAD
и git merge HEAD
, где HEAD
— это указатель на текущую ветку.
Команда git pull на удаленных ветках
git checkout new_feature
git pull <remote repo>
В этом примере сначала создается ветка и происходит переключение на нее. После этого выполняется команда git pull
, в которой передается удаленный репозиторий . Это приводит к неявной загрузке (выполнению команды pull) ветки newfeature из удаленного репозитория . Как только загрузка завершается, начинается выполнение команды git merge
.
Перебазирование с помощью git pull вместо слияния
В следующем примере показано, как выполнить синхронизацию с главной веткой main центрального репозитория, используя перебазирование.
git checkout main
git pull --rebase origin
В этом примере ваши локальные изменения просто помещаются поверх изменений всех остальных участников разработки.
Learn Git — руководства, рабочие процессы и команды Git
основы Git
Git — это бесплатная система управления версиями с открытым исходным кодом, первоначально созданная Линусом Торвальдсом в 2005 году. В отличие от более старых централизованных систем управления версиями, таких как SVN и CVS, Git является распределенным: каждый разработчик имеет полную историю своего репозитория кода локально. Это делает первоначальное клонирование репозитория медленнее, но последующие операции, такие как фиксация, обвинение, сравнение, слияние и регистрация, значительно ускоряются.
Git также имеет отличную поддержку ветвления, слияния и перезаписи истории репозитория, что привело к появлению множества инновационных и мощных рабочих процессов и инструментов. Запросы на вытягивание — один из таких популярных инструментов, который позволяет командам совместно работать над ветками Git и эффективно просматривать код друг друга. На сегодняшний день Git является наиболее широко используемой системой контроля версий в мире и считается современным стандартом для разработки программного обеспечения.
Как работает Git
Вот общий обзор того, как работает Git:
- Создайте «репозиторий» (проект) с помощью инструмента хостинга git (например, Bitbucket)
- Скопируйте (или клонируйте) репозиторий на свой локальный компьютер
- Добавьте файл в локальное репо и «зафиксируйте» (сохраните) изменения
- «Отправьте» ваши изменения в вашу основную ветку
- Внесите изменения в свой файл с помощью инструмента хостинга git и зафиксируйте
- «Вытяните» изменения на свой локальный компьютер
- Создайте «ветку» (версию), сделайте изменение, зафиксировать изменение
- Открыть «pull request» (предложить изменения в основной ветке)
- «Объединить» вашу ветку с основной веткой
Начало работы с Git
Git Download
Mac OS/X
Download InstallerHomebrewMacPortsSourcetreeBuild Git для Mac OS X
Изучите Git
Изучение Git с помощью Bitbucket CloudУзнайте о проверке кода в Bitbucket CloudLearn Ветвление с помощью Bitbucket CloudLearn Отмена изменений с помощью Bitbucket Cloud
Новичок
Что такое контроль версийЧто такое GitПочему Git для вашей организацииУстановить архив GitGit SSHGitШпаргалка GitOpsGit
Начало работы
Настройка репозиторияСохранение измененийПроверка репозиторияОтмена измененийПерезапись истории
Совместная работа
СинхронизацияСоздание запроса на вытягиваниеИспользование ветвейСравнение рабочих процессов
Миграция на Git
SVN в Git — подготовка к миграцииПереход на Git с SVNPerforce на Git — зачем делать переходМиграция с Perforce на Git
Дополнительные советы
Расширенные руководства по GitСлияние и перебазированиеReset, Checkout и RevertРасширенный журнал GitGit HooksRefs и ReflogПодмодули GitGit subtreeGit LFSGit gcGit pruneБольшие репозитории в GitGit bashКак хранить точечные файлыGit cherry pickGitKGit-show
0004 9009 Просмотреть все руководства0034 Популярные сообщенияСара Гофф-Дюпон
Пять советов по репозиториям Git, оптимизированным для CI
Читать статью
Мэтт Шелтон
Git или SVN? Как Nuance Healthcare выбрала модель ветвления Git?
Читать статью
Мэтт Шелтон
Работа с зависимостями Maven при переходе на Git
Прочитать статью
Просмотреть все статьи
Знаете ли вы.
..Филиал
Определение: Филиал представляет собой независимую линию развития. Ветки служат абстракцией для процессов редактирования/стадии/фиксации, описанных в Git Basics, первом модуле этой серии. Вы можете рассматривать их как способ запросить новый рабочий каталог, промежуточную область и историю проекта. Новые коммиты записываются в историю для текущей ветки, что приводит к разветвлению истории проекта.
Просмотреть все ссылки
Git в командной строке
- Выберите терминал
- Подтвердите установку Git
- Настройте Git
- Выберите репозиторий
- Клонировать репозиторий
- Клонировать с помощью SSH
- Клонировать с помощью HTTPS
- Клонировать с помощью токена
- Преобразование локального каталога в репозиторий
- Добавление удаленного
- Просмотр удаленных репозиториев
- Загрузка последних изменений в проекте
- Филиалы
- Создать ветку
- Перейти на ветку
- Посмотреть отличия
- Посмотреть файлы, в которых есть изменения
- Добавить и зафиксировать локальные изменения
- Подготовить и зафиксировать все изменения
- Отправить изменения на GitLab. com
- Удалить все изменения в ветке
- Отменить все изменения, которые были добавлены в область подготовки
- Отменить последнюю фиксацию
- Объединить ветку с веткой по умолчанию
- Расширенное использование Git через командную строку
- Синхронизация изменений в разветвленном репозитории с исходным
Git — это распределенная система управления версиями с открытым исходным кодом. GitLab создан поверх Git.
Многие операции с Git можно выполнять непосредственно в GitLab. Однако командная строка требуется для сложных задач, например, исправление сложных конфликтов слияния или откат коммитов.
Если вы новичок в Git и хотите учиться, работая над собственным проектом, узнать, как сделать свой первый коммит.
Для быстрого ознакомления с командами Git загрузите памятку Git.
Для получения дополнительной информации о преимуществах работы с Git и GitLab:
- Посмотрите пошаговое руководство по управлению исходным кодом GitLab.
- Узнайте, как GitLab стал основой среды разработки Worldline.
Чтобы помочь вам визуализировать то, что вы делаете локально, вы можете установить Приложение Git с графическим интерфейсом.
Выберите терминал
Чтобы выполнять команды Git на вашем компьютере, вы должны открыть терминал (также известный как команда подсказка, командная оболочка и командная строка). Вот несколько вариантов:
- Для пользователей macOS:
- Встроенный терминал. Нажмите ⌘ команду + пробел и введите
терминал
. - iTerm2. Вы можете интегрировать его с Zsh и Oh My Zsh для выделения цветом и других дополнительных функций.
- Встроенный терминал. Нажмите ⌘ команду + пробел и введите
- Для пользователей Windows:
- Встроенная командная строка. На панели задач Windows выберите значок поиска и введите
cmd
. - PowerShell.
- Гит Баш. Он встроен в Git для Windows.
- Встроенная командная строка. На панели задач Windows выберите значок поиска и введите
- Для пользователей Linux:
- Встроенный терминал Linux.
Подтвердите, что Git установлен
Вы можете определить, установлен ли Git на вашем компьютере, открыв терминал и запустив эту команду:
git --version
Если Git установлен, вывод:
git версии XYZ
Если ваш компьютер не распознает git
как команду, вы должны установить Git.
Настройка Git
Чтобы начать использовать Git с вашего компьютера, вы должны ввести свои учетные данные идентифицировать себя как автора своей работы. Имя пользователя и адрес электронной почты должны соответствовать тем, которые вы используете в GitLab.
В вашей оболочке добавьте свое имя пользователя:
git config --global user.name "your_username"
Добавьте свой адрес электронной почты:
git config --global user.email "[email protected]"
Чтобы проверить конфигурацию, выполните:
git конфиг --global --list
Параметр
--global
указывает Git всегда использовать эту информацию для всего, что вы делаете в своей системе. Если вы опустите--global
или используете--local
, конфигурация будет применяться только к текущему репозиторий.
Подробнее о том, как Git управляет конфигурациями, можно прочитать в Документация по настройке Git.
Выберите хранилище
Прежде чем начать, выберите репозиторий, в котором вы хотите работать. Вы можете использовать любой проект, на который у вас есть разрешение. доступ на GitLab.com или любой другой экземпляр GitLab.
Чтобы использовать репозиторий в примерах на этой странице:
- Перейдите на https://gitlab.com/gitlab-tests/sample-project/.
- В правом верхнем углу выберите Вилка .
- Выберите пространство имен для своего форка.
Проект становится доступным по адресу https://gitlab.com/
.
Вы можете разветвить любой проект, к которому у вас есть доступ.
Клонировать репозиторий
При клонировании репозитория файлы из удаленного репозитория загружаются на ваш компьютер, и соединение создано.
Для этого подключения необходимо добавить учетные данные. Вы можете использовать SSH или HTTPS. Рекомендуется использовать SSH.
Клон с SSH
Клонирование с помощью SSH, если вы хотите пройти аутентификацию только один раз.
- Пройдите аутентификацию в GitLab, следуя инструкциям в документации по SSH.
- Перейдите на целевую страницу вашего проекта и выберите Clone . Скопируйте URL-адрес . Клонируйте с помощью SSH .
- Откройте терминал и перейдите в каталог, в который вы хотите клонировать файлы. Git автоматически создает папку с именем репозитория и загружает туда файлы.
Запустите эту команду:
git clone [email protected]:gitlab-tests/sample-project.git
Для просмотра файлов перейдите в новый каталог:
cd sample-project
Вы также можете клонируйте репозиторий и откройте его непосредственно в Visual Studio Code.
Клон с HTTPS
Клонировать с помощью HTTPS, если вы хотите аутентифицироваться каждый раз при выполнении операции между вашим компьютером и GitLab.
- Перейдите на целевую страницу вашего проекта и выберите Клон . Скопируйте URL-адрес для Клон с HTTPS .
- Откройте терминал и перейдите в каталог, в который вы хотите клонировать файлы.
Выполните следующую команду. Git автоматически создает папку с именем репозитория и загружает туда файлы.
клон git https://gitlab.com/gitlab-tests/sample-project.git
GitLab запрашивает ваше имя пользователя и пароль.
Если вы включили двухфакторную аутентификацию (2FA) в своей учетной записи, вы не можете использовать пароль своей учетной записи. Вместо этого вы можете сделать одно из следующего:
- Клонируйте, используя токен с разрешениями
read_repository
илиwrite_repository
. - Установите диспетчер учетных данных Git.
Если вы не включили двухфакторную аутентификацию, используйте пароль своей учетной записи.
- Клонируйте, используя токен с разрешениями
Для просмотра файлов перейдите в новый каталог:
cd sample-project
В Windows, если вы несколько раз неправильно введете пароль и появится сообщение Доступ запрещен
,
добавьте свое пространство имен (имя пользователя или группу) к пути: клон git https://namespace@gitlab. com/gitlab-org/gitlab.git
.
Клонирование с использованием токена
Клонировать с помощью HTTPS с использованием токена, если:
- Вы хотите использовать 2FA.
- Вы хотите, чтобы отзываемый набор учетных данных был привязан к одному или нескольким репозиториям.
Вы можете использовать любой из этих токенов для аутентификации при клонировании через HTTPS:
- Токены личного доступа.
- Разверните токены.
- Токены доступа к проекту.
- Токены группового доступа.
git clone https://<имя пользователя>:<токен>@gitlab.example.com/tanuki/awesome_project.git
Преобразование локального каталога в репозиторий
Вы можете инициализировать локальную папку, чтобы Git отслеживал ее как репозиторий.
- Откройте терминал в каталоге, который вы хотите преобразовать.
Запустите эту команду:
git init
В вашем каталоге создается папка
. git
. Эта папка содержит Git записи и файлы конфигурации. Вы не должны редактировать эти файлы напрямую.- Добавьте путь к вашему удаленному репозиторию чтобы Git мог загрузить ваши файлы в правильный проект.
Добавить пульт
Вы добавляете «удаленный», чтобы сообщить Git, какой удаленный репозиторий в GitLab привязан в определенную локальную папку на вашем компьютере. Удаленный сообщает Git, откуда нажимать или извлекать.
Чтобы добавить удаленный сервер в локальную копию:
- В GitLab создайте проект для хранения ваших файлов.
- Посетите домашнюю страницу этого проекта, прокрутите вниз до Нажмите существующую папку и скопируйте команду, начинающуюся с
git remote add
. На вашем компьютере откройте терминал в каталоге, который вы инициализировали, вставьте скопированную команду и нажмите , введите :
git remote add origin [email protected]:username/projectpath. git
После этого вы можете подготовить свои файлы и загрузить их в GitLab.
Просмотр удаленных репозиториев
Чтобы просмотреть удаленные репозитории, введите:
git удаленный -v
Флаг -v
означает подробное описание.
Скачать последние изменения в проекте
Чтобы работать с актуальной копией проекта, вы тянете
, чтобы получить все изменения, сделанные пользователями
с момента последнего клонирования или извлечения проекта. Заменить <название ветки>
с именем вашей ветки по умолчанию
чтобы получить основной код ветки, или заменить его на название ветки ветки
вы сейчас работаете.
git pull <УДАЛЕННЫЙ> <имя-ветки>
Когда вы клонируете репозиторий, REMOTE
обычно является origin
. Вот где
репозиторий был клонирован, и указывает URL-адрес SSH или HTTPS репозитория
на удаленном сервере.
обычно является названием вашего
ветвь по умолчанию, но это может быть любая
существующая ветка. При необходимости вы можете создать дополнительные именованные пульты и ветки.
Вы можете узнать больше о том, как Git управляет удаленными репозиториями, в Документация Git Remote.
Филиалы
Ветвь — это копия файлов в репозитории на момент создания ветки.
Вы можете работать в своей ветке, не затрагивая другие ветки. Когда
вы готовы добавить свои изменения в основную кодовую базу, вы можете объединить свою ветку в
ветвь по умолчанию, например, main
.
Используйте ветки, когда:
- Хотите добавить код в проект, но не уверены, работает ли он правильно.
- Сотрудничаете над проектом с другими и не хотите, чтобы ваша работа смешивалась.
Новую ветвь часто называют функциональной ветвью , чтобы отличать ее от предыдущей. ветвь по умолчанию.
Создать ветку
Чтобы создать функциональную ветку:
git checkout -b <имя-ветки>
Имена ветвей не могут содержать пробелы и специальные символы. Используйте только строчные буквы, цифры,
дефисы ( -
) и подчеркивания ( _
).
Переключиться на филиал
Вся работа в Git выполняется в ветке. Вы можете переключаться между ветвями, чтобы видеть состояние файлов и работать в этой ветке.
Чтобы переключиться на существующую ветку:
git checkout <имя-ветки>
Например, чтобы перейти на ветку main
:
git checkout main
Посмотреть различия
Для просмотра различий между вашими локальными неустановленными изменениями и последней версией которые вы клонировали или вытащили:
git diff
Просмотр файлов, в которых есть изменения
Когда вы добавляете, изменяете или удаляете файлы или папки, Git узнает об изменениях. Чтобы проверить, какие файлы были изменены:
статус git
Добавить и зафиксировать локальные изменения
При вводе git status
локально измененные файлы отображаются красным цветом. Эти изменения могут
быть новыми, измененными или удаленными файлами или папками.
Чтобы подготовить файл для фиксации:
git add <имя файла ИЛИ имя папки>
Повторите шаг 1 для каждого файла или папки, которые вы хотите добавить. Или, чтобы подготовить все файлы в текущем каталоге и подкаталоге, введите
git add .
.Подтвердите, что файлы были добавлены в staging:
git status
Файлы должны отображаться зеленым текстом.
Чтобы зафиксировать промежуточные файлы:
git commit -m "КОММЕНТАРИЙ ДЛЯ ОПИСАНИЯ НАМЕРЕНИЯ КОММИТА"
Подготовить и зафиксировать все изменения
В качестве ярлыка вы можете добавить все локальные изменения в staging и зафиксировать их с помощью одной команды:
git commit -a -m «КОММЕНТАРИЙ, ЧТОБЫ ОПИСАТЬ НАМЕРЕНИЕ КОММИТА»
Отправить изменения на GitLab.com
Чтобы отправить все локальные изменения в удаленный репозиторий:
git push
Например, чтобы отправить ваши локальные коммиты в основную ветку
ветки origin
remote:
git push origin main
Иногда Git не позволяет выполнить отправку в репозиторий. Вместо, вы должны принудительно обновить.
Удалить все изменения в ветке
Чтобы отменить все изменения в отслеживаемых файлах:
git checkout .
Это действие удаляет изменений в файлах, а не в самих файлах. Неотслеживаемые (новые) файлы не изменяются.
Отменить все изменения, которые были добавлены в промежуточную область
Чтобы отключить (удалить) все файлы, которые не были зафиксированы:
git reset
Отменить последнюю фиксацию
Чтобы отменить последнюю фиксацию:
git reset HEAD~1
Это действие оставляет измененные файлы и папки неподготовленными в локальном репозитории.
предостережениеКоммит Git не должен быть отменен, если вы уже отправили его в удаленный репозиторий. Хотя вы можете отменить фиксацию, лучше всего избегать ситуацию в целом, работая осторожно.
Вы можете узнать больше о различных способах, которыми Git может отменить изменения в Документация по Git Undoing Things.
Объединить ветку с веткой по умолчанию
Когда вы будете готовы внести изменения в ветвь по умолчанию, вы объединяете в нее ветвь функций:
git checkout <ветка по умолчанию> git слить <функция-ветвь>
В GitLab вы обычно используете запрос на слияние для слияния ваших изменений вместо использования командной строки.
Чтобы создать запрос на слияние из форка в вышестоящий репозиторий, см. разветвление рабочего процесса.
Расширенное использование Git через командную строку
Для ознакомления с более продвинутыми методами Git см. Git rebase, force-push и конфликты слияния.
Синхронизировать изменения в разветвленном репозитории с вышестоящим
Чтобы создать копию репозитория в вашем пространстве имен, вы создаете его форк.
Изменения, внесенные в вашу копию репозитория, не синхронизируются автоматически с оригиналом.
Чтобы сохранить синхронизацию проекта с исходным проектом, вам необходимо извлечь
из исходного репозитория.