Доступ к Git можно получить с помощью командной строки или таких инструментов, как GitHub Desktop. Команды Git имеют формат git, где аргументом может быть путь к файлу. Команды также содержат опции, отмеченные символом —. Забыли, как использовать команду? Откройте руководство с помощью git help.
Работа с Git через консоль
Цель — форкнуть репозиторий на GitHub, создать ответвление и начать работать с кодом.
У вас сразу возникает множество вопросов: что такое GitHub, какие команды для него существуют, зачем, а главное, как всем этим пользоваться? Давайте разберемся в этой теме.
Когда мы пишем код, мы постоянно что-то добавляем и удаляем, и иногда в процессе все может испортиться. Вот почему перед внесением изменений полезно сделать копию проекта. Если вы собираете проекты в папки с названиями project1, project1_final и project2_final, вы быстро запутаетесь и обязательно что-то потеряете. Именно поэтому для работы с кодом используются системы контроля версий.
Система контроля версий — это программа, которая управляет различными версиями одного и того же документа и позволяет переключаться между ними, вносить изменения и отслеживать их. Существует множество подобных систем, и все они работают по принципу компьютерной игры, где вы можете вернуться на место, если что-то пошло не так.
Git — самая популярная система контроля версий. Git можно использовать из командной строки (или терминала). Каждая система имеет свой встроенный инструмент командной строки. В Windows это PowerShell или cmd, а в Linux или macOS — Terminal.
Вместо встроенных программ можно использовать любые другие, например, Git Bash в Windows или iTerm2 в macOS.
Вот как работает Terminal: вы вводите команду и получаете ответ от компьютера — либо все сработало, либо произошла ошибка, либо что-то еще нужно ввести, например, пароль. Поэтому большая часть данного руководства состоит из команд для терминала. Сначала это покажется странным, но вам понравится.
Но сначала нам нужно установить Git на ваш компьютер.
Устанавливаем и настраиваем Git
Окна. Загрузите Git для Windows, запустите exe-файл и следуйте инструкциям.
macOS: Загрузите Git для macOS и запустите файл dmg. Если он не запускается, перейдите в Системные настройки — Безопасность и нажмите Открыть.
Linux. Установите Git с помощью встроенного менеджера пакетов. Если вы используете Ubuntu, используйте sudo apt-get install git. Команды для других дистрибутивов можно найти здесь.
Как проверить, что Git установился
Откройте терминал и введите команду
Если Git установлен, будет показан номер версии, например, 2.35.1 .
➜ ~ git --version git version 2.35.1 ➜ ~
Настраиваем Git
Теперь вам нужно ввести
Если вы посмотрите на фотографию, все станет немного понятнее. Каждый круг — это обязательство. Стрелки указывают направление, с которого берется следующее обязательство. Например, C3 образуется из C2 и так далее. Все эти обязательства находятся в ветви под названием main. Это основная ветвь, обычно называемая master. Прямоугольник main* указывает, в какой привязке мы сейчас находимся, проще говоря, это указатель. […]
В результате получается очень простой граф, состоящий из одной ветви (главной) и четырех связующих. Это можно преобразовать в более сложный граф, состоящий из нескольких ветвей, объединенных в одну.
Мы обсудим это в последующих статьях. Давайте сначала разберем, как работать с веткой.
Основным интерфейсом для работы с Git'ом является консоль/терминал. Это не очень удобно, особенно для новичков, поэтому я предлагаю вам добавить дополнение с графическим интерфейсом (кнопки, диаграммы и т.д.). Я расскажу о них позже.
Но сначала нам нужно установить Git.
Регистрируемся на GitHub
#Если Homebrew установлен, brew install git #Если нет, введите эту команду. git —version #Появится окно с вопросом, хотите ли вы установить инструменты командной строки (CLT). #Примите командную строку и дождитесь установки. CLT будет установлен вместе с git
# Debian или Ubuntu sudo apt install git # CentOS sudo yum install git
- Зайдите на сайт https://github. com и нажмите кнопку Sign up .
- Введите имя пользователя (понадобится в дальнейшей работе), адрес электронной почты (такой же, как при настройке Git) и пароль.
- На почту придёт код активации — введите на сайте.
- Появится окно с выбором тарифного плана. Если вы пользуетесь Гитхабом для учёбы, то укажите, что профиль нужен только для вас и вы студент.
- Опросы и выбор интересов можно пропустить.
Вы установили Git и готовы к его использованию. Теперь давайте настроим его так, чтобы при создании фиксации он показывал автора, который ее создал.
Как работает
Откройте терминал (Linux и macOS) или консоль (Windows) и введите следующие команды.
#Задайте имя для вашего пользователя #Так как вы можете набрать Grisha_Popov #Без кавычек, пусть git config —global user.name «» #Сейчас задайте email. Принцип тот же. git config —global user.email «»
Если вы работаете под Windows, вы можете загрузить Git отсюда. Для macOS Git доступен как часть инструмента командной строки XCode. Вы можете проверить, доступен ли Git, открыв терминал и набрав git —version. Для Linux используйте sudo apt install git-all или sudo dnf install git-all .
Установка
Сразу же после установки Git вам необходимо задать имя пользователя и адрес электронной почты, поскольку они будут использоваться для вашей идентификации. Эти настройки хранятся в конфигурационном файле.
Вы можете редактировать файл .gitconfig непосредственно с помощью редактора или с помощью команды git config —global —edit. Для редактирования отдельных полей можно использовать git config —global — здесь актуальны поля user.email и user.name.
- Windows. Проходим по этой ссылке, выбираем под вашу ОС (32 или 64 битную), скачиваем и устанавливаем.
- Для Mac OS. Открываем терминал и пишем:
Кроме того, вы можете настроить текстовый редактор для написания сообщений об обязательствах, поле core.editor. По умолчанию используется системный редактор. Поле commit.template используется для указания шаблона, который будет использоваться для каждой фиксации.
- Linux. Открываем терминал и вводим следующую команду.
Существует множество других полей, но наиболее полезным является псевдоним (который связывает команду с псевдонимом). Например, с помощью git config --global alias.st "statu s-s" вы можете использовать git st вместо git statu s-s.
Настройка
А git config —list возвращает все поля с их значениями из файла конфигурации.
Чтобы инициализировать новый репозиторий .git, используйте команду git init. Если вы хотите скопировать существующий репозиторий, вы можете использовать git clone.
Git хранит существующие данные в виде серии "снимков", называемых коммитами. Коммиты хранят состояние файловой системы в определенный момент времени, а также являются ссылками на предыдущие коммиты. Каждый коммит имеет уникальный идентификатор управления, который Git использует для ссылки на этот коммит. Git хранит указатель HEAD, указывающий на коммит 1, чтобы отслеживать его историю.
Установка Git
Ссылка может быть сделана либо по контрольной сумме привязки, либо по ее положению относительно HEAD. Например: ГЛАВНОЕ
4 будет означать обязательство, которое на 4 обязательства опережает HEAD.
Git может отслеживать файлы в 3 общих областях: — рабочий каталог (файловая система вашего компьютера), — область постановки (здесь хранится содержимое следующего коммита) и — HEAD (последний коммит в репозитории).
Git управляет файлами в трех основных областях:
Все основные команды работы с файлами сводятся к пониманию того, как Git управляет этими тремя частями. Это распространенное заблуждение, что в разделе подготовленных файлов хранятся только изменения. Лучше рассматривать три раздела как отдельные файловые системы, каждая из которых содержит свои копии файлов.
Команда git status отображает все файлы, которые отличаются в трех разделах. Файлы имеют четыре состояния:
Создание Git-репозитория
Примечание Файл может находиться как в «измененном», так и в «подготовленном» состоянии, если версия в рабочем каталоге новее раздела подготовленных файлов, который, в свою очередь, новее версии в HEAD.
Мы можем использовать опци ю-s для команды git status, чтобы получить более компактный вывод (одна строка на файл). Если файл не контролируется, отображается ??; если он был изменен, его имя красное, а если он был подготовлен, то зеленое.
Чтобы показать сами изменения, а не измененные файлы, можно использовать следующие команды:~Если вы используете аргумент, diff покажет изменения только в указанных файлах/папках, например: git diff src/ .
Система файлов в Git
Команда git add обновляет раздел подготовленных файлов версиями файлов/папок в рабочем каталоге.
Файловая система Git
Команда git commit обновляет HEAD новым коммитом, который делает снимок файлов в области подготовленных файлов.
- рабочая директория (файловая система вашего компьютера);
- область подготовленных файлов (staging area, хранит содержание следующего коммита);
- HEAD (последний коммит в репозитории).
Команда git reset имеет три возможных шага:
Просмотр изменений в файловых системах
По умолчанию git reset выполняет только шаги 1 и 2, но его поведение можно изменить с помощью опций —soft (только шаг 1) и —hard (все шаги).
- Неотслеживаемый (untracked) — находится в рабочей директории, но нет ни одной версии в HEAD или в области подготовленных файлов (Git не знает о файле).
- Изменён (modified) — в рабочей директории есть более новая версия по сравнению с хранящейся в HEAD или в области подготовленных файлов (изменения не находятся в следующем коммите).
- Подготовлен (staged) — в рабочей директории и области подготовленных файлов есть более новая версия по сравнению с хранящейся в HEAD (готов к коммиту).
- Без изменений — одна версия файла во всех разделах, т. е. в последнем коммите содержится актуальная версия.
Вы можете использовать git log для возврата истории предыдущих коммитов в хронологическом порядке, указав несколько опций:
Еще одна полезная команда — git blame, которая показывает для каждой строки файла автора и контрольную сумму последнего коммита, изменившего эту строку. -L, позволяет ограничить эту команду определенными строками. Это позволит вам узнать, например, какой коммит вызвал определенную ошибку (чтобы вы могли ее исправить).
Наконец, есть команда grep git, которая ищет историю фиксации для всех файлов (а не только для
- git diff — сравнение рабочей директории с областью подготовленных файлов;
- git diff —staged — сравнение области подготовленных файлов с HEAD.
Таким образом, несколько человек могут запрашивать изменения с сервера, вносить изменения в локальные копии, а затем отправлять их на удаленный сервер, чтобы вы могли общаться друг с другом в рамках единого репозитория.
Обновление файловых систем
GitHub — это платформа, которая хранит репозитории Git на своих серверах, и частью основ распределенного контроля версий Git является знание того, как с ним работать. Вы можете либо хранить свои удаленные репозитории, либо участвовать в проектах с открытым исходным кодом на GitHub.
Как я могу участвовать в проекте с открытым исходным кодом? 8 ответов для начинающих.
Да, есть и другие платформы, но GitHub отлично подходит для знакомства с Git и добавляет новые возможности в VCS.
- Переместить указатель HEAD на (например, при откате коммита в рабочей директории и области подготовленных файлов будут более новые версии файлов, чем в HEAD). Также указатель HEAD ветки будет перемещён на этот коммит.
- Обновить область подготовленных файлов содержимым коммита. В таком случае только в рабочей директории будут новейшие версии файлов.
- Обновить рабочую директорию содержимым области подготовленных файлов. С этим нужно быть осторожнее, поскольку в итоге будут уничтожены изменения файлов.
Например, вы можете разветвить удаленный репозиторий, то есть создать собственную копию репозитория на сервере GitHub. Это полезно, если вам не разрешено создавать ответвление в исходном репозитории. Если вы используете команду git clone, в вашем локальном репозитории удаленная ветвь будет указана как origin, а исходный репозиторий — как upstream.
Просмотр изменений
Затем вам может понадобиться объединить тематическую ветвь вашего удаленного репозитория с основной ветвью исходного репозитория. Это можно сделать, создав новый pull request, в котором GitHub проверяет наличие конфликтов, прежде чем разрешить слияние. Часто перед слиянием проводятся другие проверки, такие как рецензирование и выпуск кода или даже выполнение тестов. Вы можете обсуждать код в запросе, и любой коммит, который вы отправляете в удалённую ветку темы, автоматически добавляется в запрос, даже если он был создан до этих коммитов.
- -p показывает изменения в каждом коммите;
- —stat показывает сокращённую статистику для коммитов, например изменённые файлы и количество добавленных/удалённых строк в каждом их них;
- -n показывает n последних коммитов;
- —since=___ и —until=___ позволяет отфильтровать коммиты по промежутку времени, например —since=»2019-01-01″ покажет коммиты с 1 января 2019 года;
- —pretty позволяет указать формат логов (например, —pretty=oneline ), также можно использовать —pretty=format для большей кастомизации, например —pretty=format:»%h %s» ;
- —grep и -S фильтруют коммиты с сообщениями/изменениями кода, которые содержат указанную строку, например, git log -S имя_функции позволяет посмотреть добавление/удаление функции;
- —no-merges пропускает коммиты со слиянием веток;
- ветка1..ветка2 позволяет посмотреть, какие коммиты из ветки 2 не находятся в ветке 1 (полезно при слиянии веток). Например, git log master..test покажет, каких коммитов из ветки test нет в master (о ветках поговорим чуть позже).
- —left-right ветка1. ветка2 показывает коммиты, которые есть либо в ветке 1, либо в ветке 2, но не в обеих; знак<обозначает коммиты из ветка1, а>— из ветка2. Обратите внимание: используется три точки, а не две;
- -L принимает аргумент начало,конец:файл или :функция:файл и показывает историю изменений переданного набора строк или функции в файле.
Как упоминалось ранее, Git фрагментирует объекты на основе их содержимого, а не пути к ним, и индексирует блоб соответствующего файла на основе его хэша. При изменении файла создается новый хэш и новый блоб. Во-вторых, Git хранит все версии файла, а не только изменения, поскольку использует хэш, основанный на всем файле. Таким образом, история изменений файла — это вычисленная разница между всеми блобами с их хэшами, а не просто хранение файла с конкретными изменениями. Файловая структура Git’а отличается от пользовательской, но ее можно легко воспроизвести.
Взаимодействие с другими системами контроля версий: git по умолчанию поддерживает взаимодействие с CVS (импорт и экспорт, эмуляция CVS-сервера) и Subversion (частичная поддержка импорта и экспорта). Стандартным инструментом для импорта и экспорта внутри экосистемы является серия архивных файлов в формате .tar.gz и .tar.bz2.
Чтобы использовать систему git, вам необходимо:
Удалённые репозитории
sudo apt-get upd
Чтобы импортировать настройки для одного хранилища, перейдите в соответствующую папку и выполните те же действия без —global.
Настройте внешний процессор:
- git remote add — добавляет удалённый репозиторий с заданным именем;
- git remote remove — удаляет удалённый репозиторий с заданным именем;
- git remote rename — переименовывает удалённый репозиторий;
- git remote set-url — присваивает репозиторию с именем новый адрес;
- git remote show — показывает информацию о репозитории.
git config —global core.editor emacs
- git fetch — получает данные из ветки заданного репозитория, но не сливает изменения;
- git pull — сливает данные из ветки заданного репозитория;
- git push — отправляет изменения в ветку заданного репозитория. Если локальная ветка уже отслеживает удалённую, то можно использовать просто git push или git pull .
#Связать внешний редактор emacs
GitHub
Возможно, вы захотите выбрать другой текстовый редактор. Например, вместо emacs выберите vi или nano, или то, что вам больше нравится.
Настройки Git хранятся в файлах.
Git ищет файл конфигурации в четырех местах (здесь, в Linux): в файле .gitconfig на вашем компьютере. Пользовательский файл .gitconfig находится в файле .gitconfig.
/.gitconfig. Второй пользовательский файл конфигурации, расположенный по адресу $XDG_CONFIG_HOME/git/config или $HOME/.config/git/config. Файл конфигурации локального репозитория: .git/config
cat .git/config
Отличие Git от других систем контроля версий — content tracking
#Показать конфигурацию локального хранилища.
Каждый файл добавляет или отменяет опции Git, определенные в файле над ним.
Практическая часть
Вы можете просматривать файлы конфигурации
- Установить программу git на вашей системе.
- Настроить программу и проверить её работоспособность локально
- Зарегистрировать ваш аккаунт на GitHub (если нужно скопировать репозиторий c github)
- Создать локальный репозиторий или копировать репозиторий существующего проекта
- Написать файл README.MD
- В случае, если вы начинаете проект, создать удаленный репозиторий
- Фиксировать изменения локально
- Отправлять изменения на удаленный репозиторий
- Зарегистрировать аккаунты разработчиков вашего проекта
- Выдать им ссылку на проект
Установка git
(для системы и всех пользователей):&&git config --system --listgit config --system --edit
git config --global --listgit config --global --edit
Проверьте настройки конфигурации git:
git config —list
Настройка программы Git
#Показать свою конфигурацию.
Если список длинный, вы можете прокрутить его с помощью клавиш со стрелками на клавиатуре или клавиш «pg up» и «pg dn». Чтобы выйти, нажмите клавишу q.
(какая конфигурация, где она установлена):git config --list --show-origin
Зачем исследовать консольные команды, если есть пользовательские интерфейсы? Часто вы можете сделать что-то гораздо быстрее на консоли. В дальнейшем вы можете самостоятельно автоматизировать этот процесс с помощью набора консольных команд. Консольные команды являются более гибким инструментом. Почему? Потому что ваш интерфейс может даже не знать о существовании той или иной команды. Интерфейс как таковой может даже не существовать, например, на сервере, потому что он небезопасен. В качестве первого шага, команды консоли очень полезны для понимания того, как работает система. Вам не обязательно учить их все наизусть. Вы всегда можете найти справочную информацию по любой из команд. Теоретические знания важны, но лучше всего вы учитесь, когда применяете их на практике.
Я рассказал о базовой архитектуре и работе системы Git, а также о том, как работать с удаленными репозиториями. Я рассказал об установке и настройке Git, использовании Git как локально, так и удаленно, а также о некоторых аспектах рабочего процесса.
Веб-сайт был создан с помощью Pelican. Он основан на выпуске журнала Smashing. Исходный код этого сайта лицензирован по лицензии GPLv3; все остальное содержимое лицензировано по лицензии CC-BY.
~