Система контроля версий
- Хранить, изменять, анализировать версии проекта
- Объединять результаты работ команды
Терминал (консоль, командная строка)
macOS / Linux
- Запустить программу Terminal
Windows
- На официальном сайте Git, скачать одну из версий категории Standalone Installer
- Установить программу обращая внимание на пункт Git Bash Here (включение его позволить терминалу с Git открыться в любой папке)
- Запустить программу Git Bash
Полезное
- Для выполнения команд использовать Enter
- Для использования нескольких команд, их нужно разделять
&& - Для обращения к последней используемой команде стрелка вверх
Двойное нажатие вернет предпоследнюю команду
Для возвращения команды стрелка вниз - Для автозаполнения команды или пути Tab
pwd — вывести текущую рабочую директорию
Список
ls — вывести содержимое директории
ls ~ — вывести содержимое домашней директории
ls .. — вывести содержимое родительской директории (директории уровнем выше)
ls -a — вывести расширенный список содержимого директории (все скрытые файлы)
Навигация
cd — сменить директорию
cd ~ — перейти к домашней директории
cd . — перейти в текущую директорию
cd .. — вернуться в родительскую директорию
cd / — перейти в корневую директорию
Примитивные действия
touch — создать файл в текущей директории
touch ~ — создать файл в домашней директории
touch ..— создать файл в родительской директории
mkdir — создать директорию (папку) в текущей директории
mkdir -p — создать структуру директорий
mkdir ~ — создать директорию в домашней директории
mkdir .. — создать директорию в родительской директории
cp — копировать файл
cp ~ — скопировать файл в домашнюю директорию
cp .. — скопировать файл в родительскую директорию
mv — переместить файл или папку
mv ~ — переместить в домашнюю директорию
mv .. — переместить в родительскую директорию
cat — распечатать содержимое текстового файла
rm — удалить файл из текущей папки
rmdir — удалить пустую директорию
rm -r — удалить невзирая на то, что в директории есть содержимое
macOS
Первый способ
- В терминале выполнить команду
/usr/bin/git - Установить Git
- Проверить командой
git version
Второй способ
- На официальном сайте Homebrew, скопировать команду для установки
- Найти Terminal, в него поместить и запустить скопированную ранее команду
- Установить Git с помощью Homebrew, запустив команду
brew install git - Проверить командой
git version
Linux
- На официальном сайте Git выбрать команду установки для своей версии Linux
- Скопировать и запустить эту команду в терминале
- Проверить командой
git version
Windows
- Git уже установлен вместе с терминалом
- Проверить командой
git version
Все глобальные настройки хранятся в файле .gitconfig
git config --global - вносит персональные данные (имя user.name, почта user.email)
git init — сделать текущую папку репозиторием
rm -rf .git — "разгитить" папку
Ключи
-r — позволяет удалять папки вместе с их содержимым
-f — избавляет от подтверждений об удалении
git status — проверка состояния репозитория
git add — подготовить файл к сохранению в репозиторий
git add --all — подготовить к сохранению все имеющиеся файлы
git add . — добавить всю текущую папку в репозиторий
git commit — выполнить коммит (сохранение)
git commit -m— присвоить коммиту пояснительное сообщение
got log — посмотреть историю коммитов
Платформа, которая работает с Git и упрощает командное взаимодействие
- Создание, хранение и удаление удаленного репозитория
- Совместная работа
- Зайти на GitHub по ссылке https://github.com/ (username - имя указанное при регистрации)
- Создать репозиторий во вкладке Repositories, и дать ему название
Для связки репозиториев используется SSH
SSH — протокол, обеспечивающий безопасный обмен данных в сети и использует для этого ключи
SSH-ключ — виртуальный идентификатор GitHub позволяющий получить доступ к GitHub-репозиторию
SSH-ключ — публичный (зашифрует данные) и приватный (расшифрует данные)
cd ~ && ls -la .ssh/ — проверить наличие ключей
- Использовать программу ssh-keygen
ssh-keygen -t ed25519 -C "электронная почта, к которой привязан аккаунт на GitHub"
или
ssh-keygen -t rsa -b 4096 -C "электронная почта, к которой привязан аккаунт на GitHub" - Указать место хранение ключа или сделать домашний каталог путем по умолчанию нажав Enter
- Ввести кодовую фразу или оставить место пустым нажав Enter
- Проверить сгенерировались ли ключи
la -a ~/.ssh
Созданные ключи хранятся в директории ~/.ssh
- Скопировать содержимое файла с публичным ключом в буфер обмена
macOS
pbcopy < ~/.ssh/id_номер или название.pub(Скопировать в буфер обмена все содержимое файла ~/.ssh/id_rsa.pub)
Windows
clip < ~/.ssh/id_номер или название.pubилиcat ~/.ssh/id_номер или название.pub - На GitHub в настройках выбрать SSH and GPG keys и создать новый ключ
- Дать название ключу и вставить скопированный ранее ключ
- Проверить правильность ключа
ssh -T git@github.com
На странице репозитория в GitHub необходимо скопировать URL выбрав тип SSH
git remote add — привязать удаленный репозиторий к локальному
git remote add origin git@github.com:имя аккаунта/first-project.git
git remote -v — убедиться, что репозитории связаны
git push — отправить изменения на удаленный репозиторий (В первый раз эту команду нужно вызвать с флагом -u)
-u — свяжет локальную ветку с одноименной удаленной
Основной идентификатор коммита
Хеш — короткая строка, которая состоит из цифр 0—9 и латинских букв A—F
- если хеш получить дважды для одного и того же набора входных данных, то результат будет гарантированно одинаковый
- если хоть что-то в исходных данных поменяется (хотя бы один символ), то хеш тоже изменится
git log — показать историю коммитов
- commit (хеш коммита)
- autor
- date
- само сообщение коммита
git log --oneline— показать сокращенную историю коммитов
- одна строка
- сокращенные хеши
Служебный файл папки .git, указывающий на последний коммит
cd .git/ && ls — перейти в папку и показать ее содержимое
cat HEAD — распечатать содержимое файла (внутри ссылка на хеш)
--amendработает только с последним коммитом (HEAD)--no-editоставить сообщение коммита без изменений
git commit --amend --no-edit — дополнить коммит файлом
git commit --amend -m "Новое сообщение" — изменить сообщение коммита
git diff— сравнить последнюю закоммиченную версию файла с той, что находится в состоянииmodifiedgit diff --staged— показать изменения вstagedотносительно последних закоммиченных версий
- untracked — не отслеживаемый (перед
git add) - staged — подготовленный (после
git add) - tracked — отслеживаемый (после
git commit) - modified — измененный
graph LR;
untracked -- "git add" --> staged;
staged -- "git commit" --> tracked/comitted;
tracked/comitted -- "изменения" --> modified;
modified -- "git add" --> staged;
staged --> modified;