From 3cc3a8483a2ede44d249882be1d621ff98cbbc74 Mon Sep 17 00:00:00 2001 From: 1bah Date: Tue, 11 Aug 2026 23:33:56 +0300 Subject: [PATCH 1/5] revert version --- antora.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/antora.yml b/antora.yml index ede6c87..3f554f2 100644 --- a/antora.yml +++ b/antora.yml @@ -1,5 +1,5 @@ name: book -version: latest +version: dev title: DevTools Book nav: - modules/ROOT/nav.adoc From 3734e35954b2e553e114c364381c038a14339d3a Mon Sep 17 00:00:00 2001 From: 1bah Date: Wed, 12 Aug 2026 14:04:13 +0300 Subject: [PATCH 2/5] Update logo --- modules/ROOT/images/crya.png | Bin 28866 -> 276457 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/modules/ROOT/images/crya.png b/modules/ROOT/images/crya.png index 0c0087c254dbc5aebf510cd6117a8bd745202764..ca3ab398c658613c16b99ce3354a017c8648c23b 100644 GIT binary patch literal 276457 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

IU04>ng2$_dA6}oSva1s$Y*@F^ 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 F|34;1Yg_;T literal 28866 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 From afcd8f6eb78de522abcea1b6556ef43b003fb5ec Mon Sep 17 00:00:00 2001 From: cerisesav Date: Wed, 26 Aug 2026 01:37:09 +0300 Subject: [PATCH 3/5] added git page!! --- modules/ROOT/nav.adoc | 3 + modules/ROOT/pages/authors.adoc | 6 + modules/ROOT/pages/git.adoc | 1427 +++++++++++++++++++++++++++++++ 3 files changed, 1436 insertions(+) create mode 100644 modules/ROOT/pages/git.adoc diff --git a/modules/ROOT/nav.adoc b/modules/ROOT/nav.adoc index 1dbc797..94f69da 100644 --- a/modules/ROOT/nav.adoc +++ b/modules/ROOT/nav.adoc @@ -3,6 +3,9 @@ * xref:code-of-conduct.adoc[Code of conduct] * xref:dev-guides.adoc[Гайды по разработке] +.Git +* xref:git.adoc[] + .Linux FS * xref:linux/file-types.adoc[Типы файлов] * xref:linux/fhs.adoc[FHS] diff --git a/modules/ROOT/pages/authors.adoc b/modules/ROOT/pages/authors.adoc index 353905e..ee6bd9f 100644 --- a/modules/ROOT/pages/authors.adoc +++ b/modules/ROOT/pages/authors.adoc @@ -8,4 +8,10 @@ GitHub: https://github.com/1BAH[1BAH] + GitLab: https://gitlab.com/lBAH[lBAH] +== Виктория Попова +Почта: v.popova@phystech.edu + +GitHub: https://github.com/cerisesav[cerisesav] + +GitLab: https://gitlab.com/cerisesav[karmaxxkoma] + +Telegram: https://t.me/karmaxxkoma + _Тут типо инфа.._ diff --git a/modules/ROOT/pages/git.adoc b/modules/ROOT/pages/git.adoc new file mode 100644 index 0000000..db8521f --- /dev/null +++ b/modules/ROOT/pages/git.adoc @@ -0,0 +1,1427 @@ += Git +:page-authors: Виктория Попова +:description: Работа с git + +Что вообще такое git? Если верить поисковику: + +[quote] +Git - это бесплатная распределённая система контроля версий, которая позволяет отслеживать изменения в файлах проекта, сохранять разные версии кода и удобно работать в команде. Программу создал Линус Торвальдс в 2005 году. + +Мальчик Ваня решил поспорить: «А зачем мне git? Я могу на компьютере хранить свои файлики и делать откат изменений через Ctrl+Z (Cmd + Z). Мне не нужен git!». А потом у него сгорел компьютер вместе с его проектом :) + +Git активно используется в самых разных компаниях, так как важно поддерживать структуру проекта и работать вместе, не мешая друг другу при этом. + +Прежде чем говорить о командах git, нужно познакомиться с базовыми терминами и определениями. + +== Основные объекты + +Репозиторий (repository, repo):: +Хранилище проекта: сам код плюс вся история его изменений. Бывает локальным (у вас на компьютере) и удалённым (например, на GitHub). Создать локальный репозиторий в текущей папке: ++ +[,console] +---- +$ git init +Initialized empty Git repository in /home/user/project/.git/ +---- + +Рабочая директория (working directory):: +Папка с файлами проекта, с которыми вы прямо сейчас работаете. Всё, что лежит рядом с папкой `.git`, - это ваша рабочая директория. + +Индекс / область подготовки (staging area, index):: +«Промежуточный склад», куда попадают изменения, которые вы собираетесь зафиксировать в следующем коммите. Добавить файл в индекс: ++ +[,console] +---- +$ git add main.py +$ git status +On branch main +Changes to be committed: + (use "git restore --staged ..." to unstage) + new file: main.py +---- + +Коммит (commit):: +Зафиксированный снимок состояния проекта с уникальным идентификатором (хэшем), сообщением и указанием автора. Основная единица истории в Git. ++ +[,console] +---- +$ git commit -m "Add hello world" +[main (root-commit) 3f2a1b0] Add hello world + 1 file changed, 1 insertion(+) + create mode 100644 main.py +---- + +Хэш коммита (SHA):: +40-значный идентификатор коммита; обычно достаточно первых 7 символов. ++ +[,console] +---- +$ git log --oneline +3f2a1b0 (HEAD -> main) Add hello world +---- + +HEAD:: +Указатель на текущий коммит (обычно на последний коммит в вашей активной ветке). ++ +[,console] +---- +$ cat .git/HEAD +ref: refs/heads/main +---- + +Ветка (branch):: +Независимая линия разработки. По сути - подвижный указатель на коммит. Главная ветка обычно называется `main` (раньше - `master`, можете почитать почему убрали такое интересное название). ++ +[,console] +---- +$ git branch feature-login <1> +$ git branch <2> + feature-login +* main +---- +<1> Создать новую ветку. +<2> Показать список веток; звёздочкой отмечена текущая. + +Тег (tag):: +Именованная метка на конкретном коммите, чаще всего для версий (`v1.0.0`). ++ +[,console] +---- +$ git tag v1.0.0 +$ git tag +v1.0.0 +---- + +== Работа с удалённым репозиторием + +Remote:: +Ссылка на удалённый репозиторий. Стандартное имя - `origin`. ++ +[,console] +---- +$ git remote -v +origin git@github.com:username/project.git (fetch) +origin git@github.com:username/project.git (push) +---- + +Clone:: +Скачать удалённый репозиторий к себе на компьютер вместе со всей историей. ++ +[,console] +---- +$ git clone git@github.com:username/project.git +Cloning into 'project'... +---- + +Fork:: +Своя копия чужого репозитория на сервере (термин GitHub/GitLab, не самого Git). Делается кнопкой *Fork* на странице репозитория - у команды `git` аналога нет. + +Push:: +Отправить свои локальные коммиты в удалённый репозиторий. ++ +[,console] +---- +$ git push origin main +---- + +Pull:: +Забрать изменения с удалённого репозитория и сразу применить их к своей ветке (по сути `fetch` + `merge`). ++ +[,console] +---- +$ git pull origin main +---- + +Fetch:: +Забрать изменения с удалённого репозитория, но не применять их к рабочей ветке. ++ +[,console] +---- +$ git fetch origin +---- + +Pull request (PR) / Merge request (MR):: +Запрос на слияние ваших изменений в чужую или основную ветку. Мы так, например, ревьювим кода на GitHub/GitLab. На работе тоже будете создавать реквесты. Создаётся через веб-интерфейс сервиса. + +== Изменения и история + +Merge (слияние):: +Объединение двух веток в одну. ++ +[,console] +---- +$ git checkout main +$ git merge feature-login +---- + +Merge conflict (конфликт слияния):: +Ситуация, когда Git не может автоматически объединить изменения (как пример, правили одну и ту же строку в разных ветках) и просит человека выбрать нужный вариант. Конфликтные места в файлах помечаются так: ++ +[,console] +---- +<<<<<<< HEAD +print("Hello, world!") +======= +print("Привет, мир!") +>>>>>>> feature-login +---- +TODO: добавить все виды конфликтов + +Rebase:: +«Перенос» коммитов одной ветки поверх другой; переписывает историю, делая её линейной. + +// TODO: + +[,console] +---- +$ git checkout feature-login +$ git rebase main +---- + +// TODO: `switch` и `restore`, `checkout` - объяснить шо не надо лепить + +[,console] +---- +$ git checkout main +$ git switch feature-login +---- + +Reset:: +Откат ветки к другому коммиту (может удалить последующие коммиты из истории). ++ +[,console] +---- +$ git reset --hard HEAD~1 +---- ++ +WARNING: `--hard` удаляет и коммит, и все связанные с ним изменения в файлах. + +Подробнее о флагах и видах можно будет почитать дальше. +// TODO: как добавить блять клик на раздел +Revert:: +Создание нового коммита, отменяющего изменения указанного (безопасный откат без переписывания истории). ++ +[,console] +---- +$ git revert HEAD +---- + +Log:: +Просмотр истории коммитов. ++ +[,console] +---- +$ git log --oneline --graph +* 3f2a1b0 (HEAD -> main) Add hello world +---- + +Diff:: +Просмотр различий между версиями файлов. ++ +[,console] +---- +$ git diff <1> +$ git diff --staged <2> +$ git diff main..feature-login <3> +---- +<1> Изменения в рабочей директории, ещё не добавленные в индекс. +<2> Изменения, уже добавленные в индекс. +<3> Разница между двумя ветками. + +== Сервисные понятия + +`.gitignore`:: +Файл со списком путей, которые Git должен игнорировать (например, `node_modules/`, бинарники, локальные конфиги). ++ +.Пример `.gitignore` +[,bash] +---- +# зависимости +node_modules/ +venv/ + +# сборки и бинарники +*.o +*.exe +build/ + +# среды разработки +.idea/ +.vscode/ + +# системные файлы +.DS_Store +---- + +CAUTION: git и GitHub - разные понятия! Git - это система контроля версий, а GitHub/GitLab/Bitbucket - веб-сервисы для хостинга Git-репозиториев с дополнительными возможностями. + +Теперь стоит поговорить про каждое в отдельности, дабы понять как этим пользоваться и какие есть примеры. + +== Первичная настройка Git + +Сразу после установки Git нужно один раз представиться - эти данные будут вписываться в каждый ваш коммит: + +[,console] +---- +$ git config --global user.name "Ivan Ivanov" +$ git config --global user.email "ivan@example.com" +---- + +Флаг `--global` означает «для всех репозиториев этого пользователя». Если для какого-то конкретного проекта нужно другое имя или почта (например, рабочая), запустите те же команды без `--global` внутри папки проекта - тогда настройки сохранятся только для него. + +Полезно также задать имя ветки по умолчанию и включить цветной вывод: + +[,console] +---- +$ git config --global init.defaultBranch main +$ git config --global color.ui auto +---- + +Проверить все текущие настройки: + +[,console] +---- +$ git config --list +---- + +== SSH: что это и зачем оно нужно + +*SSH (Secure Shell)* - это протокол для безопасного соединения с удалённой машиной. GitHub и GitLab используют его, чтобы убедиться: тот, кто пытается сделать `push`, действительно имеет на это право. + +Аутентификация в SSH основана на *паре ключей*: у вас есть *приватный* ключ (лежит только у вас на компьютере, никому не показываем, иначе мальчик Ваня зайдет и сольет все в даркнет) и *публичный* ключ (его мы привязываем и показываем). Всё, что зашифровано публичным ключом, может расшифровать только владелец приватного. GitHub хранит ваш публичный ключ, а при соединении проверяет, что вы владеете соответствующим приватным. + +Альтернатива SSH - HTTPS с логином и токеном, но SSH удобнее: настроил один раз и забыл, никаких паролей на каждый `push`. + +Подробнее об SSH вы узнаете чуть-чуть позже. + +=== Проверка существующих ключей + +[,console] +---- +$ ls -la ~/.ssh +---- + +Если видите файлы вида `id_ed25519` и `id_ed25519.pub` (или `id_rsa`/`id_rsa.pub`), ключ уже есть - переходите к добавлению на GitHub. + +=== Генерация нового ключа + +[,console] +---- +$ ssh-keygen -t ed25519 -C "ivan@example.com" +---- + +* `-t ed25519` - тип ключа (сейчас самый популярный; можно использовать `-t rsa -b 4096`). +* `-C` - комментарий, обычно почта; по нему потом легко узнать ключ на GitHub, если их несколько. + +`ssh-keygen` спросит две вещи: + +* *путь для сохранения* - нажмите Enter, чтобы принять значение по умолчанию (`~/.ssh/id_ed25519`); +* *passphrase* - пароль на сам ключ. Можно оставить пустым (Enter), тогда ключ будет использоваться без пароля. Если задали - придётся вводить passphrase при каждом использовании (или запомнить его в `ssh-agent`). + +=== Добавление ключа в ssh-agent + +`ssh-agent` - это фоновый процесс, который держит расшифрованный ключ в памяти, чтобы не вводить passphrase каждый раз: + +[,console] +---- +$ eval "$(ssh-agent -s)" +Agent pid 12345 +$ ssh-add ~/.ssh/id_ed25519 +---- + +=== Публикация ключа на GitHub + +Скопируйте содержимое *публичного* ключа - это файл с расширением `.pub`. Никогда не публикуйте файл без `.pub` - это приватный ключ: + +[,console] +---- +$ cat ~/.ssh/id_ed25519.pub +ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAI... ivan@example.com +---- + +Затем на GitHub: *Settings → SSH and GPG keys → New SSH key*, вставьте содержимое в поле *Key*, придумайте название (обычно имя компьютера) и сохраните. + +=== Проверка соединения + +[,console] +---- +$ ssh -T git@github.com +Hi username! You've successfully authenticated, but GitHub does not provide shell access. +---- + +Если увидели такое сообщение - всё работает. При первом соединении Git спросит, доверяете ли вы отпечатку сервера - отвечайте `yes`. + +== Создание нового репозитория с нуля + +Правильный порядок действий, если вы начинаете новый проект. + +=== Шаг 1. Создать папку и инициализировать репозиторий + +[,console] +---- +$ mkdir my-project +$ cd my-project +$ git init +Initialized empty Git repository in /home/user/my-project/.git/ +---- + +=== Шаг 2. Сразу добавить `.gitignore` + +Это важно сделать *до первого коммита*, иначе рискуете залить в историю всякий мусор: собранные бинарники, кэши IDE, локальные конфиги с паролями. Готовые шаблоны на все языки лежат здесь: https://github.com/github/gitignore. + +=== Шаг 3. Добавить README.md + +Я думаю, вы уже поняли, что это, когда делали первую таску, но если забыли: +Короткое описание проекта - что это и как запустить. Первое, что видит любой, кто открывает ваш репозиторий. + +=== Шаг 4. Первый коммит + +[,console] +---- +$ git add . +$ git status <1> +$ git commit -m "Initial commit" +---- + +=== Шаг 5. Создать пустой репозиторий на GitHub + +На сайте: *New repository*, задайте имя, *не* ставьте галочки «Add README», «Add .gitignore», «Add license». Иначе на сервере создадутся коммиты, которых нет у вас локально, и первый `push` не пройдёт без дополнительных манипуляций. + +=== Шаг 6. Привязать remote и запушить + +GitHub на странице пустого репозитория покажет готовые команды, они выглядят так: + +[,console] +---- +$ git remote add origin git@github.com:username/my-project.git +$ git branch -M main <1> +$ git push -u origin main <2> +---- +<1> Переименовать текущую ветку в `main` (на случай, если она называется `master`). +<2> Флаг `-u` (`--set-upstream`) запоминает связь `main → origin/main`, чтобы дальше можно было писать просто `git push` и `git pull` без указания ветки. + +== Как залить существующий локальный проект на GitHub + +Если у вас уже есть папка с кодом, но без Git: + +[,console] +---- +$ cd существующий-проект +$ git init +$ echo "node_modules/" > .gitignore <1> +$ git add . +$ git commit -m "Initial commit" +$ git branch -M main +$ git remote add origin git@github.com:username/project.git +$ git push -u origin main +---- +<1> Обязательно перед `git add .` - иначе всё лишнее попадёт в первый коммит, и вычистить его оттуда потом будет непросто. + +Если репозиторий уже был инициализирован раньше и нужно только привязать его к remote: + +[,console] +---- +$ git remote add origin git@github.com:username/project.git +$ git push -u origin main +---- + +== Как склонировать чужой репозиторий и работать в нём + +[,console] +---- +$ git clone git@github.com:someuser/cool-project.git +$ cd cool-project +---- + +Дальше есть два сценария в зависимости от того, есть ли у вас права на push. + +=== Сценарий 1. У вас есть права (свой проект, командная разработка) + +Не работайте прямо в `main` - заведите отдельную ветку под каждую задачу, в проде не принято все пушить в 'main': + +[,console] +---- +$ git checkout -b feature/login <1> +# ...пишете код, коммитите... +$ git push -u origin feature/login <2> +---- +<1> Создать ветку и сразу переключиться на неё. Эквивалент: `git switch -c feature/login`. +<2> Первый `push` новой ветки - с `-u`, чтобы связать её с одноимённой веткой на сервере. + +После этого на GitHub заходите в репозиторий и создаёте *Pull Request* из вашей ветки в `main`. + +=== Сценарий 2. У вас нет прав (open source, чужой проект) + +Здесь используется механизм *fork*: + +. На GitHub нажимаете *Fork* - появляется ваша копия репозитория. +. Клонируете *свой fork*, а не оригинал: ++ +[,console] +---- +$ git clone git@github.com:ВАШ_username/cool-project.git +---- +. Часто добавляют второй remote с именем `upstream`, указывающий на оригинал - чтобы забирать оттуда свежие изменения: ++ +[,console] +---- +$ git remote add upstream git@github.com:someuser/cool-project.git +$ git fetch upstream +$ git merge upstream/main +---- +. Работу ведёте в отдельной ветке, пушите в свой fork, оттуда создаёте Pull Request в оригинальный репозиторий. + +== Коммиты: практика + +=== Как сделать коммит + +Полный цикл выглядит так: + +[,console] +---- +$ git status <1> +$ git add file1.py file2.py <2> +$ git status <3> +$ git commit -m "Fix off-by-one error in pagination" <4> +---- +<1> Посмотреть, что вообще изменилось. +<2> Добавить нужные файлы в индекс. Можно `git add .` - добавить всё, но лучше выбирать осознанно. +<3> Убедиться, что в индексе именно то, что нужно. +<4> Зафиксировать снимок с сообщением. + +Полезные варианты `git add`: + +[,console] +---- +$ git add . <1> +$ git add -u <2> +$ git add -p <3> +---- +<1> Все изменения в текущей папке и ниже. +<2> Только уже отслеживаемые файлы (новые файлы не добавит). +<3> Интерактивно: Git показывает изменения по кускам (hunks) и спрашивает про каждый, добавлять ли. Отличный способ разбить кашу изменений на аккуратные отдельные коммиты. + +=== Удаление и переименование файлов + +Если удалить файл через `rm` или в проводнике, Git заметит это как обычное изменение, и вам потом придётся `git add`-ать само удаление. Проще делать всё одной командой: + +[,console] +---- +$ git rm secrets.txt <1> +$ git rm --cached secrets.txt <2> +$ git mv old.py new.py <3> +---- +<1> Удалить и с диска, и из Git. +<2> Оставить файл на диске, но перестать за ним следить (полезно, когда случайно закоммитили то, что должно было попасть в `.gitignore`). +<3> Переименовать. Аналогично `mv old.py new.py && git add old.py new.py`, но короче. + +=== Как писать хорошие сообщения коммитов + +Как минимум, лучше писать на английском языке. + +Устоявшаяся структура сообщения: + +[,text] +---- +Коротко суть (до ~50 символов, повелительное наклонение) + +Развёрнутое пояснение при необходимости: что именно изменено, +почему это нужно было сделать и что важно знать читателю коммита. +Строки обычно переносят по ~72 символа. + +Писать в коммите 'aboba' не стоит... +---- + +Чтобы удобно писать сообщение с телом, запускайте `git commit` *без* `-m` - откроется редактор (по умолчанию `vim` (как закрыть `vim` сами нагуглите, это первая трудность начинающего программиста); поменять можно так): + +[,console] +---- +$ git config --global core.editor "nano" +---- + +=== Как изменить сообщение последнего коммита + +[,console] +---- +$ git commit --amend -m "Новое сообщение" +---- + +Или без `-m`, чтобы отредактировать в редакторе: + +[,console] +---- +$ git commit --amend +---- + +`--amend` можно использовать и чтобы *дописать* забытые изменения в последний коммит: + +[,console] +---- +$ git add забытый_файл.py +$ git commit --amend --no-edit <1> +---- +<1> `--no-edit` - оставить старое сообщение как есть. + +WARNING: `--amend` создаёт *новый* коммит вместо старого (со своим хэшем). Если старый коммит уже был запушен, после `amend` придётся делать `git push --force-with-lease`, а это ломает историю для тех, кто уже успел скачать старый вариант. Правило простое: `amend` - только для коммитов, которых ещё нет на сервере. + +=== Как изменить сообщение старого коммита + +Например, чтобы изменить сообщение коммита три шага назад: + +[,console] +---- +$ git rebase -i HEAD~3 +---- + +Откроется редактор со списком коммитов. Замените `pick` на `reword` напротив нужного коммита, сохраните файл - Git откроет ещё один редактор для нового сообщения. + +CAUTION: Та же оговорка, что с `--amend`: `rebase` переписывает историю. Не делайте этого с коммитами, которые уже видели другие люди. + +== Мониторинг: смотрим, что происходит + +Пока писали код, стало ничего не понятно: где мы, что поменяли, кто это вообще написал. Для всего этого у Git есть куча команд. +Или пришел ваш коллега и накоммитил кучу файлов, вообще запутались. + +=== git status + +Первая команда, которую вы будете вводить сотни раз в день. Показывает: + +* на какой вы ветке; +* какие файлы изменены, но не добавлены в индекс; +* какие файлы уже в индексе, ждут коммита; +* какие файлы Git вообще не знает. + +Правило: перед каждым `git add` и перед каждым `git commit` - `git status`. Ваня забил на это правило и запушил в main файл с логинами тестовой БД. Не будьте как Ваня. + +=== git log + +История коммитов. Флагов у него куча, самое полезное: + +[,console] +---- +$ git log --oneline <1> +$ git log --graph --all <2> +$ git log --stat <3> +$ git log -p <4> +$ git log --author="Ivan" <5> +$ git log --grep="fix" <6> +$ git log main..feature <7> +---- +<1> Компактно, по коммиту в строку. +<2> ASCII-график веток. +<3> Плюс список изменённых файлов в каждом коммите. +<4> Плюс сам diff каждого коммита. +<5> Только коммиты определённого автора. +<6> Только коммиты, у которых в сообщении встречается слово. +<7> Что есть в feature, но нет в main. + +Красивый набор для ежедневного использования: + +[,console] +---- +$ git log --oneline --graph --decorate --all +---- + +Такое длинно писать каждый раз лень, поэтому обычно ставят алиас: + +[,console] +---- +$ git config --global alias.lg "log --oneline --graph --decorate --all" +$ git lg +---- + +=== git show + +Подробности одного коммита: автор, дата, сообщение, полный diff: + +[,console] +---- +$ git show HEAD +$ git show 3f2a1b0 +$ git show HEAD:path/to/file.py <1> +---- +<1> Версия файла в этом коммите (без diff-а, просто содержимое). + +=== git blame + +Показывает, кто и в каком коммите написал каждую строку файла. Незаменимая штука, когда смотришь на непонятный кусок кода и хочешь понять, «кто это придумал»: + +[,console] +---- +$ git blame main.py +3f2a1b0 (Ivan 2026-06-15) def calculate_total(items): +c4d5e6f (Anna 2026-06-18) return sum(item.price for item in items) +---- + +Ваня использует `blame`, чтобы понять, кому отправлять баг-репорт. + +=== git bisect + +Двоичный поиск сломавшего коммита. Незаменим в ситуации «неделю назад работало, сегодня нет, а коммитов между ними полсотни»: + +[,console] +---- +$ git bisect start +$ git bisect bad <1> +$ git bisect good 3f2a1b0 <2> +# git переключается на коммит посередине, +# вы проверяете, работает или нет: +$ git bisect good <3> +# git продолжает делить пополам, пока не найдёт первый плохой +$ git bisect reset <4> +---- +<1> Текущий коммит сломан. +<2> А вот этот работал. +<3> Или `git bisect bad`, в зависимости от результата проверки. +<4> Выйти из режима bisect и вернуться на свою ветку. + +Логарифм вместо линейного перебора, очень удобно. (Надеюсь, вы знаете в чем разница...) + +== Ветки: подробнее + +Ветка в Git - это просто подвижный указатель на коммит. Никакого волшебства: файлик в `.git/refs/heads/` с хэшем внутри. Создавать их дёшево, поэтому не стесняйтесь. + +=== Создание, переключение, удаление + +[,console] +---- +$ git branch feature-x <1> +$ git switch -c feature-x <2> +$ git checkout -b feature-x <3> +---- +<1> Создать, но не переключаться. +<2> Создать и сразу переключиться (современный способ). +<3> То же самое, старый способ. `checkout` умеет много всего, поэтому в новых версиях его разделили на `switch` (переключение веток) и `restore` (восстановление файлов). + +[,console] +---- +$ git branch <1> +$ git branch -r <2> +$ git branch -a <3> +$ git branch -v <4> +---- +<1> Локальные ветки. +<2> Удалённые. +<3> Все. +<4> Плюс последний коммит в каждой. + +[,console] +---- +$ git branch -d feature-x <1> +$ git branch -D feature-x <2> +$ git branch -M new-name <3> +---- +<1> Удалить ветку, если она уже смержена. +<2> Удалить принудительно (даже если есть незамерженные коммиты). +<3> Переименовать текущую ветку. + +=== HEAD, ~ и ^ + +`HEAD` - указатель на текущий коммит. Обычно он указывает на ветку, а ветка - на коммит. + +От любого коммита можно ходить назад через `~` и `^`: + +* `HEAD~1` - на один коммит назад от HEAD (родитель). +* `HEAD~2` - на два коммита назад. +* `HEAD^` - то же, что `HEAD~1`. Но если у коммита несколько родителей (например, merge-коммит), `HEAD^1` это первый родитель, `HEAD^2` - второй. +* `HEAD~2^2` - можно комбинировать. + +Правило-подсказка: `~` идёт вглубь по истории, `^` выбирает родителя, если их несколько. + +Работает не только с HEAD, а с любым коммитом или веткой: `main~3`, `feature-x^`. + +=== Detached HEAD + +Обычно HEAD указывает на ветку. Но если сделать `git checkout` на конкретный коммит (по хэшу или тегу), HEAD будет указывать прямо на него, минуя ветку. Это состояние называется *detached HEAD*, «оторванная голова»: + +[,console] +---- +$ git checkout 3f2a1b0 +Note: switching to '3f2a1b0'. +You are in 'detached HEAD' state... +---- + +В этом состоянии можно смотреть код, экспериментировать, даже коммитить. Но если переключиться на другую ветку, эти коммиты потеряются - на них не будет никакого указателя, и через некоторое время `git gc` их удалит. Если что-то нужно сохранить, создайте из этого места ветку: + +[,console] +---- +$ git switch -c experiment +---- + +Ваня как-то полдня фиксил баг в detached HEAD, потом переключился на main «проверить кое-что» и всё потерял. Не будьте как Ваня. Впрочем, если очень надо - см. раздел про `reflog` ниже, обычно данные ещё можно вытащить. + +=== Теги + +Тег - именованный указатель на коммит, но, в отличие от ветки, он не двигается. + +[,console] +---- +$ git tag v1.0.0 <1> +$ git tag -a v1.0.0 -m "Release" <2> +$ git tag <3> +$ git show v1.0.0 <4> +$ git push origin v1.0.0 <5> +$ git push origin --tags <6> +---- +<1> Лёгкий тег - просто ссылка на коммит. +<2> Аннотированный тег - отдельный объект с автором, датой и сообщением. Для релизов используют именно такие. +<3> Список всех тегов. +<4> Показать, что за коммит помечен. +<5> Запушить конкретный тег. Обычный `git push` теги не отправляет! +<6> Запушить все теги. + +== Работа с удалёнными репозиториями: подробнее + +Про `git push`, `git pull` и `git fetch` вы уже видели. Теперь несколько деталей, о которых часто забывают. + +=== Что делает push + +Обычно достаточно просто `git push`, если ветка уже связана с удалённой (через `-u` при первом пуше): + +[,console] +---- +$ git push <1> +$ git push origin feature-x <2> +$ git push -u origin feature-x <3> +---- +<1> Текущую ветку в её upstream. +<2> Явно указать remote и ветку. +<3> То же самое, плюс запомнить связь `feature-x → origin/feature-x`. + +=== fetch vs pull + +`fetch` скачивает данные с сервера, но ничего не трогает в ваших ветках. После fetch у вас обновляются указатели `origin/main`, `origin/feature-x`, и можно посмотреть, что там прилетело, прежде чем сливать к себе: + +[,console] +---- +$ git fetch origin +$ git log HEAD..origin/main <1> +---- +<1> Показать, что нового в origin/main по сравнению с текущей веткой. + +`pull` = `fetch` + автоматическое применение изменений. По умолчанию через merge, но можно и через rebase: + +[,console] +---- +$ git pull <1> +$ git pull --rebase <2> +$ git config --global pull.rebase true <3> +---- +<1> `fetch` + `merge`. +<2> `fetch` + `rebase`. +<3> Чтобы rebase был по умолчанию всегда. + +Разница на пальцах: + +* `pull` (через merge) - проще, но каждый раз создаёт merge-коммиты вида «Merge branch 'main' of ...». История становится ветвистой и грязной. +* `pull --rebase` - переносит ваши локальные коммиты поверх свежих чужих. История линейная, но ваши коммиты меняют хэши. Не критично, пока эти коммиты не запушены. + +В большинстве команд негласно принят `pull --rebase`, потому его обычно включают глобально. + +=== Upstream и трекинг веток + +Каждая локальная ветка может быть *связана* с удалённой - это называется *upstream*. Связь настраивается флагом `-u` (он же `--set-upstream`) при первом push: + +[,console] +---- +$ git push -u origin feature-x +---- + +После этого: + +* `git status` показывает `ahead 2, behind 1` - на сколько коммитов вы обогнали удалённую и сколько отстали. +* `git pull` и `git push` работают без аргументов. +* Можно писать `@\{upstream}` (или короче `@\{u}`) вместо `origin/feature-x`. + +Посмотреть связи: + +[,console] +---- +$ git branch -vv +* feature-x c4d5e6f [origin/feature-x: ahead 2] Add login + main 3f2a1b0 [origin/main] Initial commit +---- + +Управлять связью: + +[,console] +---- +$ git branch --set-upstream-to=origin/other-branch <1> +$ git branch --unset-upstream <2> +---- +<1> Изменить upstream уже существующей ветки. +<2> Отвязать. + +=== Удаление удалённой ветки + +[,console] +---- +$ git push origin --delete feature-x +---- + +Или короче, но менее очевидно: + +[,console] +---- +$ git push origin :feature-x +---- + +Пустое имя перед двоеточием означает «запушить пустоту в feature-x», то есть удалить её. + +=== Синхронизация с несколькими remote (fork + upstream) + +Классическая схема для open-source: у вас есть свой fork (`origin`) и оригинал (`upstream`): + +[,console] +---- +$ git remote add upstream git@github.com:owner/project.git +$ git fetch upstream <1> +$ git switch main +$ git rebase upstream/main <2> +$ git push <3> +---- +<1> Забрать свежие изменения из оригинала. +<2> Обновить свою main поверх оригинала. +<3> Запушить обновлённую main в свой fork. + +== Merge, rebase, cherry-pick + +Три способа перенести изменения из одной ветки в другую. Разница между ними это одна из самых частых тем на собеседованиях, поэтому разберём подробно. + +=== Merge + +Объединяет две ветки, создавая новый *merge-коммит* с двумя родителями: + +[,console] +---- +$ git switch main +$ git merge feature-x +---- + +Если `main` не двигалась с момента ответвления feature-x, merge будет *fast-forward*: main просто «догонит» feature-x, никакого нового коммита не создастся. Если main тоже уходила вперёд - создастся merge-коммит. + +Плюс merge: сохраняет полную историю «как было на самом деле». Минус: история становится ветвистой, и в `git log` без графа выглядит запутанно. + +=== Rebase + +«Отрывает» ваши коммиты и переносит их поверх другой ветки: + +[,console] +---- +$ git switch feature-x +$ git rebase main +---- + +Было: + +[,text] +---- + A---B---C feature-x + / +D---E---F main +---- + +Стало: + +[,text] +---- + A'--B'--C' feature-x + / +D---E---F main +---- + +Коммиты `A'`, `B'`, `C'` - новые, со своими хэшами (даже если содержимое такое же). История линейная и красивая, но переписанная. + +=== Interactive rebase - швейцарский нож + +Самая мощная штука, которая есть в Git. Позволяет редактировать, объединять, переставлять, удалять коммиты: + +[,console] +---- +$ git rebase -i HEAD~5 +---- + +Откроется редактор со списком последних 5 коммитов и командами: + +* `pick` - оставить как есть; +* `reword` - изменить сообщение; +* `edit` - остановиться на этом коммите, чтобы что-то поменять в файлах; +* `squash` - слить с предыдущим (сообщения объединятся); +* `fixup` - как `squash`, но сообщение выбросить (часто именно то, что нужно); +* `drop` - удалить коммит; +* поменять местами строки - поменяются местами и коммиты. + +Полезно перед созданием Pull Request: подчистить историю, слить мелкие «fix» коммиты, переформулировать сообщения. + +=== Cherry-pick + +Взять один конкретный коммит и применить его к текущей ветке: + +[,console] +---- +$ git cherry-pick 3f2a1b0 +$ git cherry-pick 3f2a1b0..c4d5e6f <1> +---- +<1> Диапазон коммитов. + +Полезно, когда, например, нужно перенести один хотфикс из main в старую релизную ветку, но остальные изменения из main трогать нельзя. + +=== Что когда использовать (кратко) + +* Ваша ветка локальная или живёт только в вашем fork - смело `rebase`. +* Ветка общая, на неё смотрит кто-то ещё - только `merge`. Иначе сломаете коллегам историю. +* Нужен один конкретный коммит из другой ветки - `cherry-pick`. + +CAUTION: `rebase` и `cherry-pick` создают *новые* коммиты с новыми хэшами. Если делать это с уже запушенными коммитами, потом придётся `push --force`, а это плохо (см. дальше). + +== Три дерева Git, reset и revert + +Чтобы понять, что делают `reset` и `revert`, надо разобраться с *тремя деревьями* Git. + +=== Три дерева + +*Три дерева* - это три состояния файлов, которые Git одновременно держит в голове: + +* *HEAD* - что записано в последнем коммите текущей ветки. +* *Index* (staging area) - что готовится к следующему коммиту. +* *Working directory* - что реально лежит в файлах на диске. + +Обычный цикл работы двигает файлы по этим уровням слева направо: + +[,text] +---- +working directory --git add--> index --git commit--> HEAD +---- + +* `git add` берёт изменения из working directory и кладёт в index. +* `git commit` берёт то, что в index, и записывает в новый коммит, на который начинает указывать HEAD. + +`git reset` двигает всё это обратно. + +=== Три режима reset + +У `reset` три режима, которые отличаются тем, что именно он трогает: + +* `--soft` - двигает только указатель ветки (и HEAD) на нужный коммит. Index и working directory не трогает. Все ваши изменения остаются в индексе, как будто вы их только что `git add`-нули. +* `--mixed` (по умолчанию) - двигает HEAD и сбрасывает индекс, но working directory не трогает. Изменения остаются в файлах, но теперь их надо снова добавлять командой `git add`. +* `--hard` - двигает всё три уровня. Все изменения после этого коммита теряются. Совсем. Даже из файлов на диске. + +Пример: у вас три коммита A - B - C, вы стоите на C. + +[,console] +---- +$ git reset --soft HEAD~1 <1> +$ git reset HEAD~1 <2> +$ git reset --hard HEAD~1 <3> +---- +<1> HEAD на B, но изменения B→C лежат в индексе, готовы к новому коммиту. +<2> HEAD на B, изменения B→C в рабочей директории, но не в индексе. +<3> HEAD на B, всё удалено. Осторожно! + +Ещё один трюк: + +[,console] +---- +$ git reset HEAD file.py <1> +$ git restore --staged file.py <2> +---- +<1> Убрать файл из индекса, не трогая содержимое. Полезно, когда `git add` захватил лишнее. +<2> То же самое современным способом. + +=== Reset vs revert + +Кратко: + +* `reset` двигает указатель ветки назад, как будто коммитов не было. Историю *переписывает*. +* `revert` не трогает историю. Он делает *новый* коммит, который применяет обратные изменения к указанному: + +[,console] +---- +$ git revert HEAD <1> +$ git revert 3f2a1b0 <2> +---- +<1> Отменить последний коммит новым коммитом. +<2> Отменить произвольный коммит из истории. + +Правило: если коммит уже на сервере и его видели другие, только `revert`. `reset` в этом случае сломает историю всем, кто уже успел склонировать. + +== Мерж-конфликты: как это работает изнутри + +При merge Git ищет *общего предка* двух веток (base) и смотрит, как изменился файл в каждой ветке относительно этого base. + +Три случая: + +. В одной ветке файл изменился, в другой нет - берётся изменённая версия. Никакого конфликта. +. В обеих ветках файл изменился, но в *разных местах* - Git применяет оба набора изменений. Тоже без конфликта, это называется *auto-merge*. +. В обеих ветках изменена *одна и та же строка* (или соседние) - Git не знает, какой вариант правильный, и объявляет конфликт. + +Конфликтные места помечаются в файле: + +[,text] +---- +<<<<<<< HEAD +print("Hello, world!") +======= +print("Привет, мир!") +>>>>>>> feature-x +---- + +* Между `<<<<<<< HEAD` и `=======` - ваш вариант. +* Между `=======` и `>>>>>>> feature-x` - вариант из ветки feature-x. + +Как разрешить: + +. Открываете файл, руками выбираете нужный вариант (или комбинируете), удаляете все три маркера. +. `git add FILE` - сообщить Git, что конфликт разрешён. +. `git commit` - завершить merge. + +Если запутались и хотите откатить всё: + +[,console] +---- +$ git merge --abort <1> +$ git rebase --abort <2> +---- +<1> Отменить незавершённый merge. +<2> То же для незавершённого rebase. + +TIP: Очень полезная опция - включить трёхсторонний вид конфликтов: ++ +[,console] +---- +$ git config --global merge.conflictstyle diff3 +---- ++ +После этого маркеры будут выглядеть так: ++ +[,text] +---- +<<<<<<< HEAD +print("Hello, world!") +||||||| merged common ancestors +print("hello") +======= +print("Привет, мир!") +>>>>>>> feature-x +---- ++ +Средний блок - оригинальная строка до расхождения. Гораздо проще понять, что каждая ветка меняла. + +== Stash: временно спрятать изменения + +Ситуация: вы работаете над задачей, у вас куча несохранённых изменений, и тут срочно нужно переключиться на другую ветку и что-то починить. Коммитить пока рано (код не готов), а изменения потерять нельзя. + +Тут спасает `stash`: + +[,console] +---- +$ git stash <1> +$ git switch main <2> +# ... делаем срочные дела, коммитим ... +$ git switch feature-x <3> +$ git stash pop <4> +---- +<1> Спрятать все изменения (рабочая директория чистая). +<2> Переключиться на другую ветку и работать там. +<3> Вернуться на свою задачу. +<4> Вернуть спрятанные изменения обратно. + +Другие полезные команды: + +[,console] +---- +$ git stash list <1> +$ git stash show <2> +$ git stash apply <3> +$ git stash drop <4> +$ git stash push -m "wip: login" <5> +$ git stash push path/to/file.py <6> +---- +<1> Что у нас в загашнике. +<2> Какие файлы изменены в последнем stash. +<3> Применить, но не удалять из stash. +<4> Удалить последний stash. +<5> Спрятать с сообщением - потом легче найти. +<6> Спрятать только один файл. + +Stash - штука отдельная, не привязанная к ветке. Можно спрятать в одной, применить в другой. + +== Игнорирование файлов: .gitignore и .gitkeep + +`.gitignore` мы уже видели. Ещё немного полезного синтаксиса: + +[,bash] +---- +build/ # всё в этой папке +*.log # конкретное расширение +!important.log # но не этот файл (отрицание) +/config.yaml # только в корне репозитория +**/tmp/ # в любой папке +---- + +Порядок правил важен: последнее правило, подходящее под путь, побеждает. + +*Важный подвох*: `.gitignore` работает только для *ещё не отслеживаемых* файлов. Если вы уже закоммитили `secrets.txt`, добавление его в `.gitignore` ничего не изменит - Git продолжит за ним следить. Чтобы перестать отслеживать, но оставить на диске: + +[,console] +---- +$ git rm --cached secrets.txt +$ git commit -m "Stop tracking secrets" +---- + +=== Хитрость с .gitkeep + +Git не умеет отслеживать пустые папки, он вообще работает только с файлами. А иногда пустая папка нужна (например, `logs/`, куда программа будет писать при запуске). Общепринятый трюк: положить внутрь пустой файл `.gitkeep`. + +Никакой магии тут нет: `.gitkeep` это не команда Git и не что-то встроенное. Это просто конвенция, договорённость называть такие файлы именно так. Можно назвать хоть `.please_keep_me` - работать будет одинаково. + +== Хуки (git hooks) + +Хук - это скрипт, который Git запускает автоматически в определённый момент: перед коммитом, после мержа, перед пушем. Живут в `.git/hooks/`. + +Примеры полезных хуков: + +* `pre-commit` - запустить линтер или быстрые тесты перед коммитом, отменить коммит если что-то сломано. +* `commit-msg` - проверить формат сообщения (например, чтобы был указан номер задачи). +* `pre-push` - запустить полные тесты перед push. + +По умолчанию в `.git/hooks/` лежат примеры с расширением `.sample`. Чтобы включить хук, нужно переименовать (убрать `.sample`) и сделать исполняемым: + +[,console] +---- +$ mv .git/hooks/pre-commit.sample .git/hooks/pre-commit +$ chmod +x .git/hooks/pre-commit +---- + +Простейший `pre-commit`, который запрещает коммитить в `main`: + +[,bash] +---- +#!/bin/bash +branch=$(git symbolic-ref HEAD | sed 's|refs/heads/||') +if [ "$branch" = "main" ]; then + echo "DO NOT COMMIT TO MAIN SOS ALARM WAIT BRO" + exit 1 +fi +---- + +WARNING: Папка `.git/hooks/` не версионируется - она лежит внутри `.git`, а он в репозиторий не входит. Каждый разработчик ставит хуки себе сам. Чтобы синхронизировать команду, используют инструменты вроде *pre-commit*: конфиг лежит в самом репо, хуки ставятся автоматически при `install`. + +== Сабмодули (submodules) + +Иногда нужно включить один Git-репозиторий в состав другого - например, общую библиотеку, которая живёт отдельно. Для этого есть *сабмодули*: + +[,console] +---- +$ git submodule add git@github.com:user/library.git libs/library +---- + +Внутри вашего репозитория появится папка `libs/library` с содержимым другого репозитория, а сам факт «здесь сабмодуль на такой-то коммит такого-то репозитория» запишется в файл `.gitmodules` (его надо закоммитить). + +Клонирование репозитория с сабмодулями: + +[,console] +---- +$ git clone --recurse-submodules git@github.com:user/project.git +# или, если забыли: +$ git submodule update --init --recursive +---- + +Обновить сабмодули до свежих версий из их удалённых репозиториев: + +[,console] +---- +$ git submodule update --remote +---- + +== Git LFS (Large File Storage) + +Git плохо работает с большими бинарниками. Если закоммитить файл на 100 МБ, каждый клон репозитория будет тянуть эти 100 МБ, даже если файл сто раз с тех пор поменяли - Git хранит все версии. +Заливать бинари на git - принцип плохого тона. +Git LFS решает это: вместо самого файла Git хранит маленькую метку-указатель, а сам файл лежит на отдельном сервере и скачивается по запросу. + +Установка (один раз на систему): + +[,console] +---- +$ git lfs install +---- + +Настройка в конкретном репозитории: + +[,console] +---- +$ git lfs track "*.psd" <1> +$ git lfs track "*.mp4" +$ git add .gitattributes <2> +$ git add file.psd +$ git commit -m "Add design file" +---- +<1> Все `.psd` теперь идут через LFS. +<2> LFS запишет свои настройки сюда, надо закоммитить. + +Что уже под LFS: + +[,console] +---- +$ git lfs ls-files +---- + +== Bundles + +Bundle - это архив с частью репозитория (или всем целиком), который можно передать без сетевого соединения. Полезно, когда надо скинуть репу по флешке коллеге без интернета. + +[,console] +---- +$ git bundle create repo.bundle --all <1> +$ git bundle create fix.bundle main..fix-x <2> +---- +<1> Весь репозиторий в один файл. +<2> Только коммиты, которые есть в fix-x, но нет в main. + +Применение: + +[,console] +---- +$ git clone repo.bundle new-project <1> +$ git bundle verify fix.bundle <2> +$ git fetch fix.bundle fix-x:fix-x <3> +---- +<1> Склонировать из bundle, как из обычного remote. +<2> Проверить, что bundle не побит. +<3> Забрать из bundle ветку fix-x в свою локальную fix-x. + +Штука редкая, но иногда очень выручает - особенно в местах с плохим интернетом. + +== Как устроен .git изнутри + +Мы люди уважающие себя, умеем уже пользоваться терминалом (пожалуйста, не коммитьте через веб-интерфейс), давайте заглянем в `.git/`. Понимание внутренностей сильно упрощает жизнь: становится ясно, почему `checkout` быстрый, что такое хэш и как reflog спасает после `reset --hard`. + +=== .git/objects/ + +Здесь лежат *все* данные репозитория: коммиты, деревья, содержимое файлов. Каждый объект это gzip-сжатый файл, названный своим SHA-1 хэшем. Первые 2 символа хэша - имя папки, остальные - имя файла: + +[,console] +---- +$ ls .git/objects +3f/ c4/ d5/ ... +$ ls .git/objects/3f +2a1b0e5d8f4a9c... +---- + +Посмотреть содержимое объекта: + +[,console] +---- +$ git cat-file -t 3f2a1b0 <1> +$ git cat-file -p 3f2a1b0 <2> +---- +<1> Тип объекта: `blob`, `tree`, `commit`, `tag`. +<2> Содержимое (уже разжатое). + +Всего 4 типа объектов: + +* *blob* - содержимое файла (без имени файла - имя лежит в дереве); +* *tree* - список файлов и подпапок (имена + хэши blob'ов и поддеревьев); +* *commit* - указатель на tree корня + автор + сообщение + хэши родителей; +* *tag* - аннотированный тег. + +Обычная ветка `main` при этом это просто файл `.git/refs/heads/main`, содержащий хэш коммита. Всё, никакой магии. + +=== Pack-файлы и git gc + +Если хранить по отдельному файлу на каждый объект, репозиторий разрастётся до миллионов файлов. Git время от времени пакует объекты в компактные *pack-файлы* (`.git/objects/pack/`) и удаляет свободные копии. + +Вручную запустить упаковку и уборку мусора: + +[,console] +---- +$ git gc +---- + +`gc` заодно удаляет *недостижимые* объекты - те, до которых нельзя добраться ни от одной ветки, тега или reflog. Например, коммиты, которые вы сбросили через `git reset --hard`, ещё какое-то время лежат в `.git/objects` (и их можно восстановить), но потом `gc` их окончательно удалит. + +=== .git/refs/ + +Все ссылки: ветки, теги, remote-ветки. + +[,console] +---- +$ ls .git/refs +heads/ remotes/ tags/ +$ cat .git/refs/heads/main +3f2a1b0e5d8f4a9c... +---- + +Файл `.git/HEAD` содержит либо `ref: refs/heads/branch-name` (когда HEAD указывает на ветку), либо сразу хэш коммита (detached HEAD). + +=== .git/logs/ и reflog + +Здесь лежит *reflog* - лог всех движений HEAD и веток. Каждый раз, когда вы делаете `commit`, `checkout`, `reset`, `merge`, `rebase`, в reflog записывается строчка. + +[,console] +---- +$ git reflog +c4d5e6f HEAD@{0}: commit: Add login +3f2a1b0 HEAD@{1}: reset: moving to HEAD~1 +5a6b7c8 HEAD@{2}: commit: Broken commit +---- + +Reflog *локальный*, живёт около 90 дней и это ваша страховка от катастроф. Даже если вы сделали `git reset --hard` и «потеряли» коммиты, они ещё в reflog - можно восстановить: + +[,console] +---- +$ git reset --hard HEAD@{2} +---- + +Ваня, потерявший свой detached HEAD, скорее всего мог всё вернуть через reflog. Знал бы - не потерял бы полдня. + +=== Внимание: git push -f не гарантирует удаление данных на сервере + +Есть распространённое заблуждение: «я запушил секретный токен в репозиторий, сейчас сделаю `git reset` + `git push --force`, и всё, следов не останется». Это не так, и на этом периодически горят даже опытные ребята, их потом сливают в даркнет. + +Что происходит на самом деле: + +. Вы сбрасываете локальную ветку и делаете force-push. Да, ветка на сервере теперь указывает на другой коммит, без ваших секретов. +. Но старые коммиты никуда не деваются: они остаются в `.git/objects` на сервере, потому что на них могут ещё указывать pull request'ы, кэши CI, форки, чей-то reflog. +. GitHub и GitLab держат «висячие» коммиты доступными по прямому URL с хэшем ещё долгое время. Условный `github.com/user/repo/commit/3f2a1b0` продолжит открываться. +. Если кто-то успел склонировать репозиторий или сделать fork - у него все ваши секреты и в объектах, и в reflog. И он о них скорее всего даже не знает. +. Боты и сервисы вроде GitHub secret scanning мониторят публичные репозитории в реальном времени и могли скачать секрет за те несколько минут, что он висел в открытом доступе. + +Вывод: если утёк ключ, токен или пароль - *немедленно отзывайте / меняйте сам ключ*, а не пытайтесь стереть его из истории. Все считаем данные утёкшими, ротируем, идём дальше. + +Отдельно почистить историю можно инструментами вроде `git filter-repo` или `BFG Repo-Cleaner` и попросить поддержку GitHub удалить кэши - но это уже post-mortem, а не защита. Так что тип всё, данные утекли. + +== gh и glab: работа с GitHub/GitLab из терминала + +Стандартный `git` знает только про репозитории и коммиты. Всё, что вокруг них - Pull Request, issues, actions, releases, - это надстройки конкретных сервисов, и до недавнего времени с этим приходилось лезть в браузер. + +Официальные CLI-утилиты закрывают эту дыру: + +* `gh` для GitHub - https://cli.github.com; +* `glab` для GitLab - https://gitlab.com/gitlab-org/cli. + +Что можно делать из терминала: + +[,console] +---- +$ gh auth login <1> +$ gh repo clone user/project <2> +$ gh repo create my-project --public <3> +$ gh pr create --fill <4> +$ gh pr list <5> +$ gh pr checkout 42 <6> +$ gh pr review --approve <7> +$ gh issue list +$ gh run watch <8> +---- +<1> Один раз залогиниться в GitHub. +<2> То же, что `git clone`, но короче. +<3> Создать репу и сразу привязать remote. +<4> Создать PR из текущей ветки, заголовок и описание взять из последнего коммита. +<5> Список открытых PR. +<6> Переключиться на ветку PR #42, даже если она в чужом fork. +<7> Заапрувить PR прямо из терминала. +<8> Смотреть, как крутится CI. + +`glab` устроен в целом точно так же, только для GitLab. \ No newline at end of file From b1e0487e3dd4f8289dea6d0b42f24f645bf9c17a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?N=D0=B2=D0=B0=D0=BD?= Date: Thu, 27 Aug 2026 10:16:55 +0300 Subject: [PATCH 4/5] change version name --- antora.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/antora.yml b/antora.yml index 3f554f2..c741c17 100644 --- a/antora.yml +++ b/antora.yml @@ -1,5 +1,5 @@ name: book -version: dev +version: git-dev title: DevTools Book nav: - modules/ROOT/nav.adoc From 94f412b085e2ad0aedce303010914db59dae815f Mon Sep 17 00:00:00 2001 From: cerisesav Date: Thu, 27 Aug 2026 14:18:35 +0300 Subject: [PATCH 5/5] Restructure git --- modules/ROOT/images/git/gl-navbar-avatar.png | Bin 0 -> 44767 bytes modules/ROOT/nav.adoc | 20 +- modules/ROOT/pages/git.adoc | 1256 +----------------- modules/ROOT/pages/git/basics.adoc | 93 ++ modules/ROOT/pages/git/bundles.adoc | 30 + modules/ROOT/pages/git/commits.adoc | 109 ++ modules/ROOT/pages/git/config.adoc | 30 + modules/ROOT/pages/git/conflicts.adoc | 67 + modules/ROOT/pages/git/create-repo.adoc | 52 + modules/ROOT/pages/git/gl-gh.adoc | 38 + modules/ROOT/pages/git/hooks.adoc | 35 + modules/ROOT/pages/git/internals.adoc | 103 ++ modules/ROOT/pages/git/lfs.adoc | 36 + modules/ROOT/pages/git/merge.adoc | 95 ++ modules/ROOT/pages/git/monitor.adoc | 105 ++ modules/ROOT/pages/git/refs.adoc | 97 ++ modules/ROOT/pages/git/remotes.adoc | 244 ++++ modules/ROOT/pages/git/special-files.adoc | 33 + modules/ROOT/pages/git/stash.adoc | 42 + modules/ROOT/pages/git/submodules.adoc | 31 + modules/ROOT/pages/git/trees.adoc | 76 ++ modules/ROOT/pages/protocol/ssh-keys.adoc | 51 +- modules/ROOT/pages/protocol/ssh.adoc | 0 23 files changed, 1387 insertions(+), 1256 deletions(-) create mode 100644 modules/ROOT/images/git/gl-navbar-avatar.png create mode 100644 modules/ROOT/pages/git/basics.adoc create mode 100644 modules/ROOT/pages/git/bundles.adoc create mode 100644 modules/ROOT/pages/git/commits.adoc create mode 100644 modules/ROOT/pages/git/config.adoc create mode 100644 modules/ROOT/pages/git/conflicts.adoc create mode 100644 modules/ROOT/pages/git/create-repo.adoc create mode 100644 modules/ROOT/pages/git/gl-gh.adoc create mode 100644 modules/ROOT/pages/git/hooks.adoc create mode 100644 modules/ROOT/pages/git/internals.adoc create mode 100644 modules/ROOT/pages/git/lfs.adoc create mode 100644 modules/ROOT/pages/git/merge.adoc create mode 100644 modules/ROOT/pages/git/monitor.adoc create mode 100644 modules/ROOT/pages/git/refs.adoc create mode 100644 modules/ROOT/pages/git/remotes.adoc create mode 100644 modules/ROOT/pages/git/special-files.adoc create mode 100644 modules/ROOT/pages/git/stash.adoc create mode 100644 modules/ROOT/pages/git/submodules.adoc create mode 100644 modules/ROOT/pages/git/trees.adoc create mode 100644 modules/ROOT/pages/protocol/ssh.adoc diff --git a/modules/ROOT/images/git/gl-navbar-avatar.png b/modules/ROOT/images/git/gl-navbar-avatar.png new file mode 100644 index 0000000000000000000000000000000000000000..86d439347909df3c162e89872bd886c6bc811da2 GIT binary patch literal 44767 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 C2p#PJ literal 0 HcmV?d00001 diff --git a/modules/ROOT/nav.adoc b/modules/ROOT/nav.adoc index 94f69da..b2c867f 100644 --- a/modules/ROOT/nav.adoc +++ b/modules/ROOT/nav.adoc @@ -4,7 +4,25 @@ * xref:dev-guides.adoc[Гайды по разработке] .Git -* xref:git.adoc[] + +* xref:git/basics.adoc[] +* xref:git/commits.adoc[] +* xref:git/refs.adoc[] +* xref:git/remotes.adoc[] +* xref:git/create-repo.adoc[] +* xref:git/special-files.adoc[] +* xref:git/trees.adoc[] +* xref:git/merge.adoc[] +* xref:git/conflicts.adoc[] +* xref:git/stash.adoc[] +* xref:git/monitor.adoc[] +* xref:git/config.adoc[] +* xref:git/hooks.adoc[] +* xref:git/submodules.adoc[] +* xref:git/internals.adoc[] +* xref:git/bundles.adoc[] +* xref:git/gl-gh.adoc[] +* xref:git/lfs.adoc[] .Linux FS * xref:linux/file-types.adoc[Типы файлов] diff --git a/modules/ROOT/pages/git.adoc b/modules/ROOT/pages/git.adoc index db8521f..bc53c55 100644 --- a/modules/ROOT/pages/git.adoc +++ b/modules/ROOT/pages/git.adoc @@ -2,147 +2,6 @@ :page-authors: Виктория Попова :description: Работа с git -Что вообще такое git? Если верить поисковику: - -[quote] -Git - это бесплатная распределённая система контроля версий, которая позволяет отслеживать изменения в файлах проекта, сохранять разные версии кода и удобно работать в команде. Программу создал Линус Торвальдс в 2005 году. - -Мальчик Ваня решил поспорить: «А зачем мне git? Я могу на компьютере хранить свои файлики и делать откат изменений через Ctrl+Z (Cmd + Z). Мне не нужен git!». А потом у него сгорел компьютер вместе с его проектом :) - -Git активно используется в самых разных компаниях, так как важно поддерживать структуру проекта и работать вместе, не мешая друг другу при этом. - -Прежде чем говорить о командах git, нужно познакомиться с базовыми терминами и определениями. - -== Основные объекты - -Репозиторий (repository, repo):: -Хранилище проекта: сам код плюс вся история его изменений. Бывает локальным (у вас на компьютере) и удалённым (например, на GitHub). Создать локальный репозиторий в текущей папке: -+ -[,console] ----- -$ git init -Initialized empty Git repository in /home/user/project/.git/ ----- - -Рабочая директория (working directory):: -Папка с файлами проекта, с которыми вы прямо сейчас работаете. Всё, что лежит рядом с папкой `.git`, - это ваша рабочая директория. - -Индекс / область подготовки (staging area, index):: -«Промежуточный склад», куда попадают изменения, которые вы собираетесь зафиксировать в следующем коммите. Добавить файл в индекс: -+ -[,console] ----- -$ git add main.py -$ git status -On branch main -Changes to be committed: - (use "git restore --staged ..." to unstage) - new file: main.py ----- - -Коммит (commit):: -Зафиксированный снимок состояния проекта с уникальным идентификатором (хэшем), сообщением и указанием автора. Основная единица истории в Git. -+ -[,console] ----- -$ git commit -m "Add hello world" -[main (root-commit) 3f2a1b0] Add hello world - 1 file changed, 1 insertion(+) - create mode 100644 main.py ----- - -Хэш коммита (SHA):: -40-значный идентификатор коммита; обычно достаточно первых 7 символов. -+ -[,console] ----- -$ git log --oneline -3f2a1b0 (HEAD -> main) Add hello world ----- - -HEAD:: -Указатель на текущий коммит (обычно на последний коммит в вашей активной ветке). -+ -[,console] ----- -$ cat .git/HEAD -ref: refs/heads/main ----- - -Ветка (branch):: -Независимая линия разработки. По сути - подвижный указатель на коммит. Главная ветка обычно называется `main` (раньше - `master`, можете почитать почему убрали такое интересное название). -+ -[,console] ----- -$ git branch feature-login <1> -$ git branch <2> - feature-login -* main ----- -<1> Создать новую ветку. -<2> Показать список веток; звёздочкой отмечена текущая. - -Тег (tag):: -Именованная метка на конкретном коммите, чаще всего для версий (`v1.0.0`). -+ -[,console] ----- -$ git tag v1.0.0 -$ git tag -v1.0.0 ----- - -== Работа с удалённым репозиторием - -Remote:: -Ссылка на удалённый репозиторий. Стандартное имя - `origin`. -+ -[,console] ----- -$ git remote -v -origin git@github.com:username/project.git (fetch) -origin git@github.com:username/project.git (push) ----- - -Clone:: -Скачать удалённый репозиторий к себе на компьютер вместе со всей историей. -+ -[,console] ----- -$ git clone git@github.com:username/project.git -Cloning into 'project'... ----- - -Fork:: -Своя копия чужого репозитория на сервере (термин GitHub/GitLab, не самого Git). Делается кнопкой *Fork* на странице репозитория - у команды `git` аналога нет. - -Push:: -Отправить свои локальные коммиты в удалённый репозиторий. -+ -[,console] ----- -$ git push origin main ----- - -Pull:: -Забрать изменения с удалённого репозитория и сразу применить их к своей ветке (по сути `fetch` + `merge`). -+ -[,console] ----- -$ git pull origin main ----- - -Fetch:: -Забрать изменения с удалённого репозитория, но не применять их к рабочей ветке. -+ -[,console] ----- -$ git fetch origin ----- - -Pull request (PR) / Merge request (MR):: -Запрос на слияние ваших изменений в чужую или основную ветку. Мы так, например, ревьювим кода на GitHub/GitLab. На работе тоже будете создавать реквесты. Создаётся через веб-интерфейс сервиса. - == Изменения и история Merge (слияние):: @@ -157,7 +16,7 @@ $ git merge feature-login Merge conflict (конфликт слияния):: Ситуация, когда Git не может автоматически объединить изменения (как пример, правили одну и ту же строку в разных ветках) и просит человека выбрать нужный вариант. Конфликтные места в файлах помечаются так: + -[,console] +[,git-conflict] ---- <<<<<<< HEAD print("Hello, world!") @@ -257,38 +116,11 @@ CAUTION: git и GitHub - разные понятия! Git - это систем Теперь стоит поговорить про каждое в отдельности, дабы понять как этим пользоваться и какие есть примеры. -== Первичная настройка Git - -Сразу после установки Git нужно один раз представиться - эти данные будут вписываться в каждый ваш коммит: - -[,console] ----- -$ git config --global user.name "Ivan Ivanov" -$ git config --global user.email "ivan@example.com" ----- - -Флаг `--global` означает «для всех репозиториев этого пользователя». Если для какого-то конкретного проекта нужно другое имя или почта (например, рабочая), запустите те же команды без `--global` внутри папки проекта - тогда настройки сохранятся только для него. - -Полезно также задать имя ветки по умолчанию и включить цветной вывод: - -[,console] ----- -$ git config --global init.defaultBranch main -$ git config --global color.ui auto ----- - -Проверить все текущие настройки: - -[,console] ----- -$ git config --list ----- - == SSH: что это и зачем оно нужно *SSH (Secure Shell)* - это протокол для безопасного соединения с удалённой машиной. GitHub и GitLab используют его, чтобы убедиться: тот, кто пытается сделать `push`, действительно имеет на это право. -Аутентификация в SSH основана на *паре ключей*: у вас есть *приватный* ключ (лежит только у вас на компьютере, никому не показываем, иначе мальчик Ваня зайдет и сольет все в даркнет) и *публичный* ключ (его мы привязываем и показываем). Всё, что зашифровано публичным ключом, может расшифровать только владелец приватного. GitHub хранит ваш публичный ключ, а при соединении проверяет, что вы владеете соответствующим приватным. +Аутентификация в SSH основана на *паре ключей*: у вас есть *приватный* ключ (лежит только на компьютере, никому не показываем, иначе мальчик Ваня зайдет и сольет все в даркнет) и *публичный* ключ (его мы привязываем и показываем). Всё, что зашифровано публичным ключом, может расшифровать только владелец приватного. GitHub хранит ваш публичный ключ, а при соединении проверяет, что вы владеете соответствующим приватным. Альтернатива SSH - HTTPS с логином и токеном, но SSH удобнее: настроил один раз и забыл, никаких паролей на каждый `push`. @@ -341,1087 +173,3 @@ ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAI... ivan@example.com Затем на GitHub: *Settings → SSH and GPG keys → New SSH key*, вставьте содержимое в поле *Key*, придумайте название (обычно имя компьютера) и сохраните. -=== Проверка соединения - -[,console] ----- -$ ssh -T git@github.com -Hi username! You've successfully authenticated, but GitHub does not provide shell access. ----- - -Если увидели такое сообщение - всё работает. При первом соединении Git спросит, доверяете ли вы отпечатку сервера - отвечайте `yes`. - -== Создание нового репозитория с нуля - -Правильный порядок действий, если вы начинаете новый проект. - -=== Шаг 1. Создать папку и инициализировать репозиторий - -[,console] ----- -$ mkdir my-project -$ cd my-project -$ git init -Initialized empty Git repository in /home/user/my-project/.git/ ----- - -=== Шаг 2. Сразу добавить `.gitignore` - -Это важно сделать *до первого коммита*, иначе рискуете залить в историю всякий мусор: собранные бинарники, кэши IDE, локальные конфиги с паролями. Готовые шаблоны на все языки лежат здесь: https://github.com/github/gitignore. - -=== Шаг 3. Добавить README.md - -Я думаю, вы уже поняли, что это, когда делали первую таску, но если забыли: -Короткое описание проекта - что это и как запустить. Первое, что видит любой, кто открывает ваш репозиторий. - -=== Шаг 4. Первый коммит - -[,console] ----- -$ git add . -$ git status <1> -$ git commit -m "Initial commit" ----- - -=== Шаг 5. Создать пустой репозиторий на GitHub - -На сайте: *New repository*, задайте имя, *не* ставьте галочки «Add README», «Add .gitignore», «Add license». Иначе на сервере создадутся коммиты, которых нет у вас локально, и первый `push` не пройдёт без дополнительных манипуляций. - -=== Шаг 6. Привязать remote и запушить - -GitHub на странице пустого репозитория покажет готовые команды, они выглядят так: - -[,console] ----- -$ git remote add origin git@github.com:username/my-project.git -$ git branch -M main <1> -$ git push -u origin main <2> ----- -<1> Переименовать текущую ветку в `main` (на случай, если она называется `master`). -<2> Флаг `-u` (`--set-upstream`) запоминает связь `main → origin/main`, чтобы дальше можно было писать просто `git push` и `git pull` без указания ветки. - -== Как залить существующий локальный проект на GitHub - -Если у вас уже есть папка с кодом, но без Git: - -[,console] ----- -$ cd существующий-проект -$ git init -$ echo "node_modules/" > .gitignore <1> -$ git add . -$ git commit -m "Initial commit" -$ git branch -M main -$ git remote add origin git@github.com:username/project.git -$ git push -u origin main ----- -<1> Обязательно перед `git add .` - иначе всё лишнее попадёт в первый коммит, и вычистить его оттуда потом будет непросто. - -Если репозиторий уже был инициализирован раньше и нужно только привязать его к remote: - -[,console] ----- -$ git remote add origin git@github.com:username/project.git -$ git push -u origin main ----- - -== Как склонировать чужой репозиторий и работать в нём - -[,console] ----- -$ git clone git@github.com:someuser/cool-project.git -$ cd cool-project ----- - -Дальше есть два сценария в зависимости от того, есть ли у вас права на push. - -=== Сценарий 1. У вас есть права (свой проект, командная разработка) - -Не работайте прямо в `main` - заведите отдельную ветку под каждую задачу, в проде не принято все пушить в 'main': - -[,console] ----- -$ git checkout -b feature/login <1> -# ...пишете код, коммитите... -$ git push -u origin feature/login <2> ----- -<1> Создать ветку и сразу переключиться на неё. Эквивалент: `git switch -c feature/login`. -<2> Первый `push` новой ветки - с `-u`, чтобы связать её с одноимённой веткой на сервере. - -После этого на GitHub заходите в репозиторий и создаёте *Pull Request* из вашей ветки в `main`. - -=== Сценарий 2. У вас нет прав (open source, чужой проект) - -Здесь используется механизм *fork*: - -. На GitHub нажимаете *Fork* - появляется ваша копия репозитория. -. Клонируете *свой fork*, а не оригинал: -+ -[,console] ----- -$ git clone git@github.com:ВАШ_username/cool-project.git ----- -. Часто добавляют второй remote с именем `upstream`, указывающий на оригинал - чтобы забирать оттуда свежие изменения: -+ -[,console] ----- -$ git remote add upstream git@github.com:someuser/cool-project.git -$ git fetch upstream -$ git merge upstream/main ----- -. Работу ведёте в отдельной ветке, пушите в свой fork, оттуда создаёте Pull Request в оригинальный репозиторий. - -== Коммиты: практика - -=== Как сделать коммит - -Полный цикл выглядит так: - -[,console] ----- -$ git status <1> -$ git add file1.py file2.py <2> -$ git status <3> -$ git commit -m "Fix off-by-one error in pagination" <4> ----- -<1> Посмотреть, что вообще изменилось. -<2> Добавить нужные файлы в индекс. Можно `git add .` - добавить всё, но лучше выбирать осознанно. -<3> Убедиться, что в индексе именно то, что нужно. -<4> Зафиксировать снимок с сообщением. - -Полезные варианты `git add`: - -[,console] ----- -$ git add . <1> -$ git add -u <2> -$ git add -p <3> ----- -<1> Все изменения в текущей папке и ниже. -<2> Только уже отслеживаемые файлы (новые файлы не добавит). -<3> Интерактивно: Git показывает изменения по кускам (hunks) и спрашивает про каждый, добавлять ли. Отличный способ разбить кашу изменений на аккуратные отдельные коммиты. - -=== Удаление и переименование файлов - -Если удалить файл через `rm` или в проводнике, Git заметит это как обычное изменение, и вам потом придётся `git add`-ать само удаление. Проще делать всё одной командой: - -[,console] ----- -$ git rm secrets.txt <1> -$ git rm --cached secrets.txt <2> -$ git mv old.py new.py <3> ----- -<1> Удалить и с диска, и из Git. -<2> Оставить файл на диске, но перестать за ним следить (полезно, когда случайно закоммитили то, что должно было попасть в `.gitignore`). -<3> Переименовать. Аналогично `mv old.py new.py && git add old.py new.py`, но короче. - -=== Как писать хорошие сообщения коммитов - -Как минимум, лучше писать на английском языке. - -Устоявшаяся структура сообщения: - -[,text] ----- -Коротко суть (до ~50 символов, повелительное наклонение) - -Развёрнутое пояснение при необходимости: что именно изменено, -почему это нужно было сделать и что важно знать читателю коммита. -Строки обычно переносят по ~72 символа. - -Писать в коммите 'aboba' не стоит... ----- - -Чтобы удобно писать сообщение с телом, запускайте `git commit` *без* `-m` - откроется редактор (по умолчанию `vim` (как закрыть `vim` сами нагуглите, это первая трудность начинающего программиста); поменять можно так): - -[,console] ----- -$ git config --global core.editor "nano" ----- - -=== Как изменить сообщение последнего коммита - -[,console] ----- -$ git commit --amend -m "Новое сообщение" ----- - -Или без `-m`, чтобы отредактировать в редакторе: - -[,console] ----- -$ git commit --amend ----- - -`--amend` можно использовать и чтобы *дописать* забытые изменения в последний коммит: - -[,console] ----- -$ git add забытый_файл.py -$ git commit --amend --no-edit <1> ----- -<1> `--no-edit` - оставить старое сообщение как есть. - -WARNING: `--amend` создаёт *новый* коммит вместо старого (со своим хэшем). Если старый коммит уже был запушен, после `amend` придётся делать `git push --force-with-lease`, а это ломает историю для тех, кто уже успел скачать старый вариант. Правило простое: `amend` - только для коммитов, которых ещё нет на сервере. - -=== Как изменить сообщение старого коммита - -Например, чтобы изменить сообщение коммита три шага назад: - -[,console] ----- -$ git rebase -i HEAD~3 ----- - -Откроется редактор со списком коммитов. Замените `pick` на `reword` напротив нужного коммита, сохраните файл - Git откроет ещё один редактор для нового сообщения. - -CAUTION: Та же оговорка, что с `--amend`: `rebase` переписывает историю. Не делайте этого с коммитами, которые уже видели другие люди. - -== Мониторинг: смотрим, что происходит - -Пока писали код, стало ничего не понятно: где мы, что поменяли, кто это вообще написал. Для всего этого у Git есть куча команд. -Или пришел ваш коллега и накоммитил кучу файлов, вообще запутались. - -=== git status - -Первая команда, которую вы будете вводить сотни раз в день. Показывает: - -* на какой вы ветке; -* какие файлы изменены, но не добавлены в индекс; -* какие файлы уже в индексе, ждут коммита; -* какие файлы Git вообще не знает. - -Правило: перед каждым `git add` и перед каждым `git commit` - `git status`. Ваня забил на это правило и запушил в main файл с логинами тестовой БД. Не будьте как Ваня. - -=== git log - -История коммитов. Флагов у него куча, самое полезное: - -[,console] ----- -$ git log --oneline <1> -$ git log --graph --all <2> -$ git log --stat <3> -$ git log -p <4> -$ git log --author="Ivan" <5> -$ git log --grep="fix" <6> -$ git log main..feature <7> ----- -<1> Компактно, по коммиту в строку. -<2> ASCII-график веток. -<3> Плюс список изменённых файлов в каждом коммите. -<4> Плюс сам diff каждого коммита. -<5> Только коммиты определённого автора. -<6> Только коммиты, у которых в сообщении встречается слово. -<7> Что есть в feature, но нет в main. - -Красивый набор для ежедневного использования: - -[,console] ----- -$ git log --oneline --graph --decorate --all ----- - -Такое длинно писать каждый раз лень, поэтому обычно ставят алиас: - -[,console] ----- -$ git config --global alias.lg "log --oneline --graph --decorate --all" -$ git lg ----- - -=== git show - -Подробности одного коммита: автор, дата, сообщение, полный diff: - -[,console] ----- -$ git show HEAD -$ git show 3f2a1b0 -$ git show HEAD:path/to/file.py <1> ----- -<1> Версия файла в этом коммите (без diff-а, просто содержимое). - -=== git blame - -Показывает, кто и в каком коммите написал каждую строку файла. Незаменимая штука, когда смотришь на непонятный кусок кода и хочешь понять, «кто это придумал»: - -[,console] ----- -$ git blame main.py -3f2a1b0 (Ivan 2026-06-15) def calculate_total(items): -c4d5e6f (Anna 2026-06-18) return sum(item.price for item in items) ----- - -Ваня использует `blame`, чтобы понять, кому отправлять баг-репорт. - -=== git bisect - -Двоичный поиск сломавшего коммита. Незаменим в ситуации «неделю назад работало, сегодня нет, а коммитов между ними полсотни»: - -[,console] ----- -$ git bisect start -$ git bisect bad <1> -$ git bisect good 3f2a1b0 <2> -# git переключается на коммит посередине, -# вы проверяете, работает или нет: -$ git bisect good <3> -# git продолжает делить пополам, пока не найдёт первый плохой -$ git bisect reset <4> ----- -<1> Текущий коммит сломан. -<2> А вот этот работал. -<3> Или `git bisect bad`, в зависимости от результата проверки. -<4> Выйти из режима bisect и вернуться на свою ветку. - -Логарифм вместо линейного перебора, очень удобно. (Надеюсь, вы знаете в чем разница...) - -== Ветки: подробнее - -Ветка в Git - это просто подвижный указатель на коммит. Никакого волшебства: файлик в `.git/refs/heads/` с хэшем внутри. Создавать их дёшево, поэтому не стесняйтесь. - -=== Создание, переключение, удаление - -[,console] ----- -$ git branch feature-x <1> -$ git switch -c feature-x <2> -$ git checkout -b feature-x <3> ----- -<1> Создать, но не переключаться. -<2> Создать и сразу переключиться (современный способ). -<3> То же самое, старый способ. `checkout` умеет много всего, поэтому в новых версиях его разделили на `switch` (переключение веток) и `restore` (восстановление файлов). - -[,console] ----- -$ git branch <1> -$ git branch -r <2> -$ git branch -a <3> -$ git branch -v <4> ----- -<1> Локальные ветки. -<2> Удалённые. -<3> Все. -<4> Плюс последний коммит в каждой. - -[,console] ----- -$ git branch -d feature-x <1> -$ git branch -D feature-x <2> -$ git branch -M new-name <3> ----- -<1> Удалить ветку, если она уже смержена. -<2> Удалить принудительно (даже если есть незамерженные коммиты). -<3> Переименовать текущую ветку. - -=== HEAD, ~ и ^ - -`HEAD` - указатель на текущий коммит. Обычно он указывает на ветку, а ветка - на коммит. - -От любого коммита можно ходить назад через `~` и `^`: - -* `HEAD~1` - на один коммит назад от HEAD (родитель). -* `HEAD~2` - на два коммита назад. -* `HEAD^` - то же, что `HEAD~1`. Но если у коммита несколько родителей (например, merge-коммит), `HEAD^1` это первый родитель, `HEAD^2` - второй. -* `HEAD~2^2` - можно комбинировать. - -Правило-подсказка: `~` идёт вглубь по истории, `^` выбирает родителя, если их несколько. - -Работает не только с HEAD, а с любым коммитом или веткой: `main~3`, `feature-x^`. - -=== Detached HEAD - -Обычно HEAD указывает на ветку. Но если сделать `git checkout` на конкретный коммит (по хэшу или тегу), HEAD будет указывать прямо на него, минуя ветку. Это состояние называется *detached HEAD*, «оторванная голова»: - -[,console] ----- -$ git checkout 3f2a1b0 -Note: switching to '3f2a1b0'. -You are in 'detached HEAD' state... ----- - -В этом состоянии можно смотреть код, экспериментировать, даже коммитить. Но если переключиться на другую ветку, эти коммиты потеряются - на них не будет никакого указателя, и через некоторое время `git gc` их удалит. Если что-то нужно сохранить, создайте из этого места ветку: - -[,console] ----- -$ git switch -c experiment ----- - -Ваня как-то полдня фиксил баг в detached HEAD, потом переключился на main «проверить кое-что» и всё потерял. Не будьте как Ваня. Впрочем, если очень надо - см. раздел про `reflog` ниже, обычно данные ещё можно вытащить. - -=== Теги - -Тег - именованный указатель на коммит, но, в отличие от ветки, он не двигается. - -[,console] ----- -$ git tag v1.0.0 <1> -$ git tag -a v1.0.0 -m "Release" <2> -$ git tag <3> -$ git show v1.0.0 <4> -$ git push origin v1.0.0 <5> -$ git push origin --tags <6> ----- -<1> Лёгкий тег - просто ссылка на коммит. -<2> Аннотированный тег - отдельный объект с автором, датой и сообщением. Для релизов используют именно такие. -<3> Список всех тегов. -<4> Показать, что за коммит помечен. -<5> Запушить конкретный тег. Обычный `git push` теги не отправляет! -<6> Запушить все теги. - -== Работа с удалёнными репозиториями: подробнее - -Про `git push`, `git pull` и `git fetch` вы уже видели. Теперь несколько деталей, о которых часто забывают. - -=== Что делает push - -Обычно достаточно просто `git push`, если ветка уже связана с удалённой (через `-u` при первом пуше): - -[,console] ----- -$ git push <1> -$ git push origin feature-x <2> -$ git push -u origin feature-x <3> ----- -<1> Текущую ветку в её upstream. -<2> Явно указать remote и ветку. -<3> То же самое, плюс запомнить связь `feature-x → origin/feature-x`. - -=== fetch vs pull - -`fetch` скачивает данные с сервера, но ничего не трогает в ваших ветках. После fetch у вас обновляются указатели `origin/main`, `origin/feature-x`, и можно посмотреть, что там прилетело, прежде чем сливать к себе: - -[,console] ----- -$ git fetch origin -$ git log HEAD..origin/main <1> ----- -<1> Показать, что нового в origin/main по сравнению с текущей веткой. - -`pull` = `fetch` + автоматическое применение изменений. По умолчанию через merge, но можно и через rebase: - -[,console] ----- -$ git pull <1> -$ git pull --rebase <2> -$ git config --global pull.rebase true <3> ----- -<1> `fetch` + `merge`. -<2> `fetch` + `rebase`. -<3> Чтобы rebase был по умолчанию всегда. - -Разница на пальцах: - -* `pull` (через merge) - проще, но каждый раз создаёт merge-коммиты вида «Merge branch 'main' of ...». История становится ветвистой и грязной. -* `pull --rebase` - переносит ваши локальные коммиты поверх свежих чужих. История линейная, но ваши коммиты меняют хэши. Не критично, пока эти коммиты не запушены. - -В большинстве команд негласно принят `pull --rebase`, потому его обычно включают глобально. - -=== Upstream и трекинг веток - -Каждая локальная ветка может быть *связана* с удалённой - это называется *upstream*. Связь настраивается флагом `-u` (он же `--set-upstream`) при первом push: - -[,console] ----- -$ git push -u origin feature-x ----- - -После этого: - -* `git status` показывает `ahead 2, behind 1` - на сколько коммитов вы обогнали удалённую и сколько отстали. -* `git pull` и `git push` работают без аргументов. -* Можно писать `@\{upstream}` (или короче `@\{u}`) вместо `origin/feature-x`. - -Посмотреть связи: - -[,console] ----- -$ git branch -vv -* feature-x c4d5e6f [origin/feature-x: ahead 2] Add login - main 3f2a1b0 [origin/main] Initial commit ----- - -Управлять связью: - -[,console] ----- -$ git branch --set-upstream-to=origin/other-branch <1> -$ git branch --unset-upstream <2> ----- -<1> Изменить upstream уже существующей ветки. -<2> Отвязать. - -=== Удаление удалённой ветки - -[,console] ----- -$ git push origin --delete feature-x ----- - -Или короче, но менее очевидно: - -[,console] ----- -$ git push origin :feature-x ----- - -Пустое имя перед двоеточием означает «запушить пустоту в feature-x», то есть удалить её. - -=== Синхронизация с несколькими remote (fork + upstream) - -Классическая схема для open-source: у вас есть свой fork (`origin`) и оригинал (`upstream`): - -[,console] ----- -$ git remote add upstream git@github.com:owner/project.git -$ git fetch upstream <1> -$ git switch main -$ git rebase upstream/main <2> -$ git push <3> ----- -<1> Забрать свежие изменения из оригинала. -<2> Обновить свою main поверх оригинала. -<3> Запушить обновлённую main в свой fork. - -== Merge, rebase, cherry-pick - -Три способа перенести изменения из одной ветки в другую. Разница между ними это одна из самых частых тем на собеседованиях, поэтому разберём подробно. - -=== Merge - -Объединяет две ветки, создавая новый *merge-коммит* с двумя родителями: - -[,console] ----- -$ git switch main -$ git merge feature-x ----- - -Если `main` не двигалась с момента ответвления feature-x, merge будет *fast-forward*: main просто «догонит» feature-x, никакого нового коммита не создастся. Если main тоже уходила вперёд - создастся merge-коммит. - -Плюс merge: сохраняет полную историю «как было на самом деле». Минус: история становится ветвистой, и в `git log` без графа выглядит запутанно. - -=== Rebase - -«Отрывает» ваши коммиты и переносит их поверх другой ветки: - -[,console] ----- -$ git switch feature-x -$ git rebase main ----- - -Было: - -[,text] ----- - A---B---C feature-x - / -D---E---F main ----- - -Стало: - -[,text] ----- - A'--B'--C' feature-x - / -D---E---F main ----- - -Коммиты `A'`, `B'`, `C'` - новые, со своими хэшами (даже если содержимое такое же). История линейная и красивая, но переписанная. - -=== Interactive rebase - швейцарский нож - -Самая мощная штука, которая есть в Git. Позволяет редактировать, объединять, переставлять, удалять коммиты: - -[,console] ----- -$ git rebase -i HEAD~5 ----- - -Откроется редактор со списком последних 5 коммитов и командами: - -* `pick` - оставить как есть; -* `reword` - изменить сообщение; -* `edit` - остановиться на этом коммите, чтобы что-то поменять в файлах; -* `squash` - слить с предыдущим (сообщения объединятся); -* `fixup` - как `squash`, но сообщение выбросить (часто именно то, что нужно); -* `drop` - удалить коммит; -* поменять местами строки - поменяются местами и коммиты. - -Полезно перед созданием Pull Request: подчистить историю, слить мелкие «fix» коммиты, переформулировать сообщения. - -=== Cherry-pick - -Взять один конкретный коммит и применить его к текущей ветке: - -[,console] ----- -$ git cherry-pick 3f2a1b0 -$ git cherry-pick 3f2a1b0..c4d5e6f <1> ----- -<1> Диапазон коммитов. - -Полезно, когда, например, нужно перенести один хотфикс из main в старую релизную ветку, но остальные изменения из main трогать нельзя. - -=== Что когда использовать (кратко) - -* Ваша ветка локальная или живёт только в вашем fork - смело `rebase`. -* Ветка общая, на неё смотрит кто-то ещё - только `merge`. Иначе сломаете коллегам историю. -* Нужен один конкретный коммит из другой ветки - `cherry-pick`. - -CAUTION: `rebase` и `cherry-pick` создают *новые* коммиты с новыми хэшами. Если делать это с уже запушенными коммитами, потом придётся `push --force`, а это плохо (см. дальше). - -== Три дерева Git, reset и revert - -Чтобы понять, что делают `reset` и `revert`, надо разобраться с *тремя деревьями* Git. - -=== Три дерева - -*Три дерева* - это три состояния файлов, которые Git одновременно держит в голове: - -* *HEAD* - что записано в последнем коммите текущей ветки. -* *Index* (staging area) - что готовится к следующему коммиту. -* *Working directory* - что реально лежит в файлах на диске. - -Обычный цикл работы двигает файлы по этим уровням слева направо: - -[,text] ----- -working directory --git add--> index --git commit--> HEAD ----- - -* `git add` берёт изменения из working directory и кладёт в index. -* `git commit` берёт то, что в index, и записывает в новый коммит, на который начинает указывать HEAD. - -`git reset` двигает всё это обратно. - -=== Три режима reset - -У `reset` три режима, которые отличаются тем, что именно он трогает: - -* `--soft` - двигает только указатель ветки (и HEAD) на нужный коммит. Index и working directory не трогает. Все ваши изменения остаются в индексе, как будто вы их только что `git add`-нули. -* `--mixed` (по умолчанию) - двигает HEAD и сбрасывает индекс, но working directory не трогает. Изменения остаются в файлах, но теперь их надо снова добавлять командой `git add`. -* `--hard` - двигает всё три уровня. Все изменения после этого коммита теряются. Совсем. Даже из файлов на диске. - -Пример: у вас три коммита A - B - C, вы стоите на C. - -[,console] ----- -$ git reset --soft HEAD~1 <1> -$ git reset HEAD~1 <2> -$ git reset --hard HEAD~1 <3> ----- -<1> HEAD на B, но изменения B→C лежат в индексе, готовы к новому коммиту. -<2> HEAD на B, изменения B→C в рабочей директории, но не в индексе. -<3> HEAD на B, всё удалено. Осторожно! - -Ещё один трюк: - -[,console] ----- -$ git reset HEAD file.py <1> -$ git restore --staged file.py <2> ----- -<1> Убрать файл из индекса, не трогая содержимое. Полезно, когда `git add` захватил лишнее. -<2> То же самое современным способом. - -=== Reset vs revert - -Кратко: - -* `reset` двигает указатель ветки назад, как будто коммитов не было. Историю *переписывает*. -* `revert` не трогает историю. Он делает *новый* коммит, который применяет обратные изменения к указанному: - -[,console] ----- -$ git revert HEAD <1> -$ git revert 3f2a1b0 <2> ----- -<1> Отменить последний коммит новым коммитом. -<2> Отменить произвольный коммит из истории. - -Правило: если коммит уже на сервере и его видели другие, только `revert`. `reset` в этом случае сломает историю всем, кто уже успел склонировать. - -== Мерж-конфликты: как это работает изнутри - -При merge Git ищет *общего предка* двух веток (base) и смотрит, как изменился файл в каждой ветке относительно этого base. - -Три случая: - -. В одной ветке файл изменился, в другой нет - берётся изменённая версия. Никакого конфликта. -. В обеих ветках файл изменился, но в *разных местах* - Git применяет оба набора изменений. Тоже без конфликта, это называется *auto-merge*. -. В обеих ветках изменена *одна и та же строка* (или соседние) - Git не знает, какой вариант правильный, и объявляет конфликт. - -Конфликтные места помечаются в файле: - -[,text] ----- -<<<<<<< HEAD -print("Hello, world!") -======= -print("Привет, мир!") ->>>>>>> feature-x ----- - -* Между `<<<<<<< HEAD` и `=======` - ваш вариант. -* Между `=======` и `>>>>>>> feature-x` - вариант из ветки feature-x. - -Как разрешить: - -. Открываете файл, руками выбираете нужный вариант (или комбинируете), удаляете все три маркера. -. `git add FILE` - сообщить Git, что конфликт разрешён. -. `git commit` - завершить merge. - -Если запутались и хотите откатить всё: - -[,console] ----- -$ git merge --abort <1> -$ git rebase --abort <2> ----- -<1> Отменить незавершённый merge. -<2> То же для незавершённого rebase. - -TIP: Очень полезная опция - включить трёхсторонний вид конфликтов: -+ -[,console] ----- -$ git config --global merge.conflictstyle diff3 ----- -+ -После этого маркеры будут выглядеть так: -+ -[,text] ----- -<<<<<<< HEAD -print("Hello, world!") -||||||| merged common ancestors -print("hello") -======= -print("Привет, мир!") ->>>>>>> feature-x ----- -+ -Средний блок - оригинальная строка до расхождения. Гораздо проще понять, что каждая ветка меняла. - -== Stash: временно спрятать изменения - -Ситуация: вы работаете над задачей, у вас куча несохранённых изменений, и тут срочно нужно переключиться на другую ветку и что-то починить. Коммитить пока рано (код не готов), а изменения потерять нельзя. - -Тут спасает `stash`: - -[,console] ----- -$ git stash <1> -$ git switch main <2> -# ... делаем срочные дела, коммитим ... -$ git switch feature-x <3> -$ git stash pop <4> ----- -<1> Спрятать все изменения (рабочая директория чистая). -<2> Переключиться на другую ветку и работать там. -<3> Вернуться на свою задачу. -<4> Вернуть спрятанные изменения обратно. - -Другие полезные команды: - -[,console] ----- -$ git stash list <1> -$ git stash show <2> -$ git stash apply <3> -$ git stash drop <4> -$ git stash push -m "wip: login" <5> -$ git stash push path/to/file.py <6> ----- -<1> Что у нас в загашнике. -<2> Какие файлы изменены в последнем stash. -<3> Применить, но не удалять из stash. -<4> Удалить последний stash. -<5> Спрятать с сообщением - потом легче найти. -<6> Спрятать только один файл. - -Stash - штука отдельная, не привязанная к ветке. Можно спрятать в одной, применить в другой. - -== Игнорирование файлов: .gitignore и .gitkeep - -`.gitignore` мы уже видели. Ещё немного полезного синтаксиса: - -[,bash] ----- -build/ # всё в этой папке -*.log # конкретное расширение -!important.log # но не этот файл (отрицание) -/config.yaml # только в корне репозитория -**/tmp/ # в любой папке ----- - -Порядок правил важен: последнее правило, подходящее под путь, побеждает. - -*Важный подвох*: `.gitignore` работает только для *ещё не отслеживаемых* файлов. Если вы уже закоммитили `secrets.txt`, добавление его в `.gitignore` ничего не изменит - Git продолжит за ним следить. Чтобы перестать отслеживать, но оставить на диске: - -[,console] ----- -$ git rm --cached secrets.txt -$ git commit -m "Stop tracking secrets" ----- - -=== Хитрость с .gitkeep - -Git не умеет отслеживать пустые папки, он вообще работает только с файлами. А иногда пустая папка нужна (например, `logs/`, куда программа будет писать при запуске). Общепринятый трюк: положить внутрь пустой файл `.gitkeep`. - -Никакой магии тут нет: `.gitkeep` это не команда Git и не что-то встроенное. Это просто конвенция, договорённость называть такие файлы именно так. Можно назвать хоть `.please_keep_me` - работать будет одинаково. - -== Хуки (git hooks) - -Хук - это скрипт, который Git запускает автоматически в определённый момент: перед коммитом, после мержа, перед пушем. Живут в `.git/hooks/`. - -Примеры полезных хуков: - -* `pre-commit` - запустить линтер или быстрые тесты перед коммитом, отменить коммит если что-то сломано. -* `commit-msg` - проверить формат сообщения (например, чтобы был указан номер задачи). -* `pre-push` - запустить полные тесты перед push. - -По умолчанию в `.git/hooks/` лежат примеры с расширением `.sample`. Чтобы включить хук, нужно переименовать (убрать `.sample`) и сделать исполняемым: - -[,console] ----- -$ mv .git/hooks/pre-commit.sample .git/hooks/pre-commit -$ chmod +x .git/hooks/pre-commit ----- - -Простейший `pre-commit`, который запрещает коммитить в `main`: - -[,bash] ----- -#!/bin/bash -branch=$(git symbolic-ref HEAD | sed 's|refs/heads/||') -if [ "$branch" = "main" ]; then - echo "DO NOT COMMIT TO MAIN SOS ALARM WAIT BRO" - exit 1 -fi ----- - -WARNING: Папка `.git/hooks/` не версионируется - она лежит внутри `.git`, а он в репозиторий не входит. Каждый разработчик ставит хуки себе сам. Чтобы синхронизировать команду, используют инструменты вроде *pre-commit*: конфиг лежит в самом репо, хуки ставятся автоматически при `install`. - -== Сабмодули (submodules) - -Иногда нужно включить один Git-репозиторий в состав другого - например, общую библиотеку, которая живёт отдельно. Для этого есть *сабмодули*: - -[,console] ----- -$ git submodule add git@github.com:user/library.git libs/library ----- - -Внутри вашего репозитория появится папка `libs/library` с содержимым другого репозитория, а сам факт «здесь сабмодуль на такой-то коммит такого-то репозитория» запишется в файл `.gitmodules` (его надо закоммитить). - -Клонирование репозитория с сабмодулями: - -[,console] ----- -$ git clone --recurse-submodules git@github.com:user/project.git -# или, если забыли: -$ git submodule update --init --recursive ----- - -Обновить сабмодули до свежих версий из их удалённых репозиториев: - -[,console] ----- -$ git submodule update --remote ----- - -== Git LFS (Large File Storage) - -Git плохо работает с большими бинарниками. Если закоммитить файл на 100 МБ, каждый клон репозитория будет тянуть эти 100 МБ, даже если файл сто раз с тех пор поменяли - Git хранит все версии. -Заливать бинари на git - принцип плохого тона. -Git LFS решает это: вместо самого файла Git хранит маленькую метку-указатель, а сам файл лежит на отдельном сервере и скачивается по запросу. - -Установка (один раз на систему): - -[,console] ----- -$ git lfs install ----- - -Настройка в конкретном репозитории: - -[,console] ----- -$ git lfs track "*.psd" <1> -$ git lfs track "*.mp4" -$ git add .gitattributes <2> -$ git add file.psd -$ git commit -m "Add design file" ----- -<1> Все `.psd` теперь идут через LFS. -<2> LFS запишет свои настройки сюда, надо закоммитить. - -Что уже под LFS: - -[,console] ----- -$ git lfs ls-files ----- - -== Bundles - -Bundle - это архив с частью репозитория (или всем целиком), который можно передать без сетевого соединения. Полезно, когда надо скинуть репу по флешке коллеге без интернета. - -[,console] ----- -$ git bundle create repo.bundle --all <1> -$ git bundle create fix.bundle main..fix-x <2> ----- -<1> Весь репозиторий в один файл. -<2> Только коммиты, которые есть в fix-x, но нет в main. - -Применение: - -[,console] ----- -$ git clone repo.bundle new-project <1> -$ git bundle verify fix.bundle <2> -$ git fetch fix.bundle fix-x:fix-x <3> ----- -<1> Склонировать из bundle, как из обычного remote. -<2> Проверить, что bundle не побит. -<3> Забрать из bundle ветку fix-x в свою локальную fix-x. - -Штука редкая, но иногда очень выручает - особенно в местах с плохим интернетом. - -== Как устроен .git изнутри - -Мы люди уважающие себя, умеем уже пользоваться терминалом (пожалуйста, не коммитьте через веб-интерфейс), давайте заглянем в `.git/`. Понимание внутренностей сильно упрощает жизнь: становится ясно, почему `checkout` быстрый, что такое хэш и как reflog спасает после `reset --hard`. - -=== .git/objects/ - -Здесь лежат *все* данные репозитория: коммиты, деревья, содержимое файлов. Каждый объект это gzip-сжатый файл, названный своим SHA-1 хэшем. Первые 2 символа хэша - имя папки, остальные - имя файла: - -[,console] ----- -$ ls .git/objects -3f/ c4/ d5/ ... -$ ls .git/objects/3f -2a1b0e5d8f4a9c... ----- - -Посмотреть содержимое объекта: - -[,console] ----- -$ git cat-file -t 3f2a1b0 <1> -$ git cat-file -p 3f2a1b0 <2> ----- -<1> Тип объекта: `blob`, `tree`, `commit`, `tag`. -<2> Содержимое (уже разжатое). - -Всего 4 типа объектов: - -* *blob* - содержимое файла (без имени файла - имя лежит в дереве); -* *tree* - список файлов и подпапок (имена + хэши blob'ов и поддеревьев); -* *commit* - указатель на tree корня + автор + сообщение + хэши родителей; -* *tag* - аннотированный тег. - -Обычная ветка `main` при этом это просто файл `.git/refs/heads/main`, содержащий хэш коммита. Всё, никакой магии. - -=== Pack-файлы и git gc - -Если хранить по отдельному файлу на каждый объект, репозиторий разрастётся до миллионов файлов. Git время от времени пакует объекты в компактные *pack-файлы* (`.git/objects/pack/`) и удаляет свободные копии. - -Вручную запустить упаковку и уборку мусора: - -[,console] ----- -$ git gc ----- - -`gc` заодно удаляет *недостижимые* объекты - те, до которых нельзя добраться ни от одной ветки, тега или reflog. Например, коммиты, которые вы сбросили через `git reset --hard`, ещё какое-то время лежат в `.git/objects` (и их можно восстановить), но потом `gc` их окончательно удалит. - -=== .git/refs/ - -Все ссылки: ветки, теги, remote-ветки. - -[,console] ----- -$ ls .git/refs -heads/ remotes/ tags/ -$ cat .git/refs/heads/main -3f2a1b0e5d8f4a9c... ----- - -Файл `.git/HEAD` содержит либо `ref: refs/heads/branch-name` (когда HEAD указывает на ветку), либо сразу хэш коммита (detached HEAD). - -=== .git/logs/ и reflog - -Здесь лежит *reflog* - лог всех движений HEAD и веток. Каждый раз, когда вы делаете `commit`, `checkout`, `reset`, `merge`, `rebase`, в reflog записывается строчка. - -[,console] ----- -$ git reflog -c4d5e6f HEAD@{0}: commit: Add login -3f2a1b0 HEAD@{1}: reset: moving to HEAD~1 -5a6b7c8 HEAD@{2}: commit: Broken commit ----- - -Reflog *локальный*, живёт около 90 дней и это ваша страховка от катастроф. Даже если вы сделали `git reset --hard` и «потеряли» коммиты, они ещё в reflog - можно восстановить: - -[,console] ----- -$ git reset --hard HEAD@{2} ----- - -Ваня, потерявший свой detached HEAD, скорее всего мог всё вернуть через reflog. Знал бы - не потерял бы полдня. - -=== Внимание: git push -f не гарантирует удаление данных на сервере - -Есть распространённое заблуждение: «я запушил секретный токен в репозиторий, сейчас сделаю `git reset` + `git push --force`, и всё, следов не останется». Это не так, и на этом периодически горят даже опытные ребята, их потом сливают в даркнет. - -Что происходит на самом деле: - -. Вы сбрасываете локальную ветку и делаете force-push. Да, ветка на сервере теперь указывает на другой коммит, без ваших секретов. -. Но старые коммиты никуда не деваются: они остаются в `.git/objects` на сервере, потому что на них могут ещё указывать pull request'ы, кэши CI, форки, чей-то reflog. -. GitHub и GitLab держат «висячие» коммиты доступными по прямому URL с хэшем ещё долгое время. Условный `github.com/user/repo/commit/3f2a1b0` продолжит открываться. -. Если кто-то успел склонировать репозиторий или сделать fork - у него все ваши секреты и в объектах, и в reflog. И он о них скорее всего даже не знает. -. Боты и сервисы вроде GitHub secret scanning мониторят публичные репозитории в реальном времени и могли скачать секрет за те несколько минут, что он висел в открытом доступе. - -Вывод: если утёк ключ, токен или пароль - *немедленно отзывайте / меняйте сам ключ*, а не пытайтесь стереть его из истории. Все считаем данные утёкшими, ротируем, идём дальше. - -Отдельно почистить историю можно инструментами вроде `git filter-repo` или `BFG Repo-Cleaner` и попросить поддержку GitHub удалить кэши - но это уже post-mortem, а не защита. Так что тип всё, данные утекли. - -== gh и glab: работа с GitHub/GitLab из терминала - -Стандартный `git` знает только про репозитории и коммиты. Всё, что вокруг них - Pull Request, issues, actions, releases, - это надстройки конкретных сервисов, и до недавнего времени с этим приходилось лезть в браузер. - -Официальные CLI-утилиты закрывают эту дыру: - -* `gh` для GitHub - https://cli.github.com; -* `glab` для GitLab - https://gitlab.com/gitlab-org/cli. - -Что можно делать из терминала: - -[,console] ----- -$ gh auth login <1> -$ gh repo clone user/project <2> -$ gh repo create my-project --public <3> -$ gh pr create --fill <4> -$ gh pr list <5> -$ gh pr checkout 42 <6> -$ gh pr review --approve <7> -$ gh issue list -$ gh run watch <8> ----- -<1> Один раз залогиниться в GitHub. -<2> То же, что `git clone`, но короче. -<3> Создать репу и сразу привязать remote. -<4> Создать PR из текущей ветки, заголовок и описание взять из последнего коммита. -<5> Список открытых PR. -<6> Переключиться на ветку PR #42, даже если она в чужом fork. -<7> Заапрувить PR прямо из терминала. -<8> Смотреть, как крутится CI. - -`glab` устроен в целом точно так же, только для GitLab. \ No newline at end of file diff --git a/modules/ROOT/pages/git/basics.adoc b/modules/ROOT/pages/git/basics.adoc new file mode 100644 index 0000000..ed86950 --- /dev/null +++ b/modules/ROOT/pages/git/basics.adoc @@ -0,0 +1,93 @@ += Git basic concepts +:page-authors: Виктория Попова +:description: Git. Базовые понятия + +Что вообще такое git? Если верить поисковику: + +[quote] +Git - это бесплатная распределённая система контроля версий, которая позволяет отслеживать изменения в файлах проекта, сохранять разные версии кода и удобно работать в команде. Программу создал Линус Торвальдс в 2005 году. + +Мальчик Ваня решил поспорить: «А зачем мне git? Я могу на компьютере хранить свои файлики и делать откат изменений через Ctrl+Z (Cmd + Z). Мне не нужен git!». А потом у него сгорел компьютер вместе с его проектом :) + +Git активно используется в самых разных компаниях, так как важно поддерживать структуру проекта и работать вместе, не мешая друг другу при этом. + +Прежде чем говорить о командах git, нужно познакомиться с базовыми терминами и определениями. + +== Основные объекты + +Репозиторий (repository, repo):: +Хранилище проекта: сам код плюс вся история его изменений. Бывает локальным (у вас на компьютере) и удалённым (например, на GitHub). Создать локальный репозиторий в текущей папке: ++ +[,console] +---- +$ git init +Initialized empty Git repository in /home/user/project/.git/ +---- + +Рабочая директория (working directory):: +Папка с файлами проекта, с которыми вы прямо сейчас работаете. Всё, что лежит рядом с папкой `.git`, - это ваша рабочая директория. + +Индекс / область подготовки (staging area, index):: +«Промежуточный склад», куда попадают изменения, которые вы собираетесь зафиксировать в следующем коммите. Добавить файл в индекс: ++ +[,console] +---- +$ git add main.py +$ git status +On branch main +Changes to be committed: + (use "git restore --staged ..." to unstage) + new file: main.py +---- + +Коммит (commit):: +Зафиксированный снимок состояния проекта с уникальным идентификатором (хэшем), сообщением и указанием автора. Основная единица истории в Git. ++ +[,console] +---- +$ git commit -m "Add hello world" +[main (root-commit) 3f2a1b0] Add hello world + 1 file changed, 1 insertion(+) + create mode 100644 main.py +---- + +Хэш коммита (SHA):: +40-значный идентификатор коммита; обычно достаточно первых 7 символов. ++ +[,console] +---- +$ git log --oneline +3f2a1b0 (HEAD -> main) Add hello world +---- + +HEAD:: +Указатель на текущий коммит (обычно на последний коммит в вашей активной ветке). ++ +[,console] +---- +$ cat .git/HEAD +ref: refs/heads/main +---- + +Ветка (branch):: +Независимая линия разработки. По сути - подвижный указатель на коммит. Главная ветка обычно называется `main` (раньше - `master`, можете почитать почему убрали такое интересное название). ++ +[,console] +---- +$ git branch feature-login <1> +$ git branch <2> + feature-login +* main +---- +<1> Создать новую ветку. +<2> Показать список веток; звёздочкой отмечена текущая. + +Тег (tag):: +Именованная метка на конкретном коммите, чаще всего для версий (`v1.0.0`). ++ +[,console] +---- +$ git tag v1.0.0 +$ git tag +v1.0.0 +---- diff --git a/modules/ROOT/pages/git/bundles.adoc b/modules/ROOT/pages/git/bundles.adoc new file mode 100644 index 0000000..3ba26ec --- /dev/null +++ b/modules/ROOT/pages/git/bundles.adoc @@ -0,0 +1,30 @@ += Bundles +:page-authors: Виктория Попова +:description: Git. Bundles + + +== Bundles + +Bundle - это архив с частью репозитория (или всем целиком), который можно передать без сетевого соединения. Полезно, когда надо скинуть репу по флешке коллеге без интернета. + +[,console] +---- +$ git bundle create repo.bundle --all <1> +$ git bundle create fix.bundle main..fix-x <2> +---- +<1> Весь репозиторий в один файл. +<2> Только коммиты, которые есть в fix-x, но нет в main. + +Применение: + +[,console] +---- +$ git clone repo.bundle new-project <1> +$ git bundle verify fix.bundle <2> +$ git fetch fix.bundle fix-x:fix-x <3> +---- +<1> Склонировать из bundle, как из обычного remote. +<2> Проверить, что bundle не побит. +<3> Забрать из bundle ветку fix-x в свою локальную fix-x. + +Штука редкая, но иногда очень выручает - особенно в местах с плохим интернетом. \ No newline at end of file diff --git a/modules/ROOT/pages/git/commits.adoc b/modules/ROOT/pages/git/commits.adoc new file mode 100644 index 0000000..ddb92f2 --- /dev/null +++ b/modules/ROOT/pages/git/commits.adoc @@ -0,0 +1,109 @@ += Commits +:page-authors: Виктория Попова +:description: Git. Коммиты + +== Коммиты: практика + +=== Как сделать коммит + +Полный цикл выглядит так: + +[,console] +---- +$ git status <1> +$ git add file1.py file2.py <2> +$ git status <3> +$ git commit -m "Fix off-by-one error in pagination" <4> +---- +<1> Посмотреть, что вообще изменилось. +<2> Добавить нужные файлы в индекс. Можно `git add .` - добавить всё, но лучше выбирать осознанно. +<3> Убедиться, что в индексе именно то, что нужно. +<4> Зафиксировать снимок с сообщением. + +Полезные варианты `git add`: + +[,console] +---- +$ git add . <1> +$ git add -u <2> +$ git add -p <3> +---- +<1> Все изменения в текущей папке и ниже. +<2> Только уже отслеживаемые файлы (новые файлы не добавит). +<3> Интерактивно: Git показывает изменения по кускам (hunks) и спрашивает про каждый, добавлять ли. Отличный способ разбить кашу изменений на аккуратные отдельные коммиты. + +=== Удаление и переименование файлов + +Если удалить файл через `rm` или в проводнике, Git заметит это как обычное изменение, и вам потом придётся `git add`-ать само удаление. Проще делать всё одной командой: + +[,console] +---- +$ git rm secrets.txt <1> +$ git rm --cached secrets.txt <2> +$ git mv old.py new.py <3> +---- +<1> Удалить и с диска, и из Git. +<2> Оставить файл на диске, но перестать за ним следить (полезно, когда случайно закоммитили то, что должно было попасть в `.gitignore`). +<3> Переименовать. Аналогично `mv old.py new.py && git add old.py new.py`, но короче. + +=== Как писать хорошие сообщения коммитов + +Как минимум, лучше писать на английском языке. + +Устоявшаяся структура сообщения: + +[,text] +---- +Коротко суть (до ~50 символов, повелительное наклонение) + +Развёрнутое пояснение при необходимости: что именно изменено, +почему это нужно было сделать и что важно знать читателю коммита. +Строки обычно переносят по ~72 символа. + +Писать в коммите 'aboba' не стоит... +---- + +Чтобы удобно писать сообщение с телом, запускайте `git commit` *без* `-m` - откроется редактор (по умолчанию `vim` (как закрыть `vim` сами нагуглите, это первая трудность начинающего программиста); поменять можно так): + +[,console] +---- +$ git config --global core.editor "nano" +---- + +=== Как изменить сообщение последнего коммита + +[,console] +---- +$ git commit --amend -m "Новое сообщение" +---- + +Или без `-m`, чтобы отредактировать в редакторе: + +[,console] +---- +$ git commit --amend +---- + +`--amend` можно использовать и чтобы *дописать* забытые изменения в последний коммит: + +[,console] +---- +$ git add забытый_файл.py +$ git commit --amend --no-edit <1> +---- +<1> `--no-edit` - оставить старое сообщение как есть. + +WARNING: `--amend` создаёт *новый* коммит вместо старого (со своим хэшем). Если старый коммит уже был запушен, после `amend` придётся делать `git push --force-with-lease`, а это ломает историю для тех, кто уже успел скачать старый вариант. Правило простое: `amend` - только для коммитов, которых ещё нет на сервере. + +=== Как изменить сообщение старого коммита + +Например, чтобы изменить сообщение коммита три шага назад: + +[,console] +---- +$ git rebase -i HEAD~3 +---- + +Откроется редактор со списком коммитов. Замените `pick` на `reword` напротив нужного коммита, сохраните файл - Git откроет ещё один редактор для нового сообщения. + +CAUTION: Та же оговорка, что с `--amend`: `rebase` переписывает историю. Не делайте этого с коммитами, которые уже видели другие люди. diff --git a/modules/ROOT/pages/git/config.adoc b/modules/ROOT/pages/git/config.adoc new file mode 100644 index 0000000..cfe37a7 --- /dev/null +++ b/modules/ROOT/pages/git/config.adoc @@ -0,0 +1,30 @@ += Config +:page-authors: Виктория Попова +:description: Git. Конфигурация + +== Первичная настройка Git + +Сразу после установки Git нужно один раз представиться - эти данные будут вписываться в каждый ваш коммит: + +[,console] +---- +$ git config --global user.name "Ivan Ivanov" +$ git config --global user.email "ivan@example.com" +---- + +Флаг `--global` означает «для всех репозиториев этого пользователя». Если для какого-то конкретного проекта нужно другое имя или почта (например, рабочая), запустите те же команды без `--global` внутри папки проекта - тогда настройки сохранятся только для него. + +Полезно также задать имя ветки по умолчанию и включить цветной вывод: + +[,console] +---- +$ git config --global init.defaultBranch main +$ git config --global color.ui auto +---- + +Проверить все текущие настройки: + +[,console] +---- +$ git config --list +---- diff --git a/modules/ROOT/pages/git/conflicts.adoc b/modules/ROOT/pages/git/conflicts.adoc new file mode 100644 index 0000000..50c81bb --- /dev/null +++ b/modules/ROOT/pages/git/conflicts.adoc @@ -0,0 +1,67 @@ += Merge conflicts +:page-authors: Виктория Попова +:description: Git. Мерж конфликты + + + +== Мерж-конфликты: как это работает изнутри + +При merge Git ищет *общего предка* двух веток (base) и смотрит, как изменился файл в каждой ветке относительно этого base. + +Три случая: + +. В одной ветке файл изменился, в другой нет - берётся изменённая версия. Никакого конфликта. +. В обеих ветках файл изменился, но в *разных местах* - Git применяет оба набора изменений. Тоже без конфликта, это называется *auto-merge*. +. В обеих ветках изменена *одна и та же строка* (или соседние) - Git не знает, какой вариант правильный, и объявляет конфликт. + +Конфликтные места помечаются в файле: + +[,text] +---- +<<<<<<< HEAD +print("Hello, world!") +======= +print("Привет, мир!") +>>>>>>> feature-x +---- + +* Между `<<<<<<< HEAD` и `=======` - ваш вариант. +* Между `=======` и `>>>>>>> feature-x` - вариант из ветки feature-x. + +Как разрешить: + +. Открываете файл, руками выбираете нужный вариант (или комбинируете), удаляете все три маркера. +. `git add FILE` - сообщить Git, что конфликт разрешён. +. `git commit` - завершить merge. + +Если запутались и хотите откатить всё: + +[,console] +---- +$ git merge --abort <1> +$ git rebase --abort <2> +---- +<1> Отменить незавершённый merge. +<2> То же для незавершённого rebase. + +TIP: Очень полезная опция - включить трёхсторонний вид конфликтов: ++ +[,console] +---- +$ git config --global merge.conflictstyle diff3 +---- ++ +После этого маркеры будут выглядеть так: ++ +[,text] +---- +<<<<<<< HEAD +print("Hello, world!") +||||||| merged common ancestors +print("hello") +======= +print("Привет, мир!") +>>>>>>> feature-x +---- ++ +Средний блок - оригинальная строка до расхождения. Гораздо проще понять, что каждая ветка меняла. diff --git a/modules/ROOT/pages/git/create-repo.adoc b/modules/ROOT/pages/git/create-repo.adoc new file mode 100644 index 0000000..082014a --- /dev/null +++ b/modules/ROOT/pages/git/create-repo.adoc @@ -0,0 +1,52 @@ += Create a repo +:page-authors: Виктория Попова +:description: Git. Создание репозитория + +== Создание нового репозитория с нуля + +Правильный порядок действий, если вы начинаете новый проект. + +=== Шаг 1. Создать папку и инициализировать репозиторий + +[,console] +---- +$ mkdir my-project +$ cd my-project +$ git init +Initialized empty Git repository in /home/user/my-project/.git/ +---- + +=== Шаг 2. Сразу добавить `.gitignore` + +Это важно сделать *до первого коммита*, иначе рискуете залить в историю всякий мусор: собранные бинарники, кэши IDE, локальные конфиги с паролями. Готовые шаблоны на все языки лежат здесь: https://github.com/github/gitignore. + +=== Шаг 3. Добавить README.md + +Я думаю, вы уже поняли, что это, когда делали первую таску, но если забыли: +Короткое описание проекта - что это и как запустить. Первое, что видит любой, кто открывает ваш репозиторий. + +=== Шаг 4. Первый коммит + +[,console] +---- +$ git add . +$ git status <1> +$ git commit -m "Initial commit" +---- + +=== Шаг 5. Создать пустой репозиторий на GitHub + +На сайте: *New repository*, задайте имя, *не* ставьте галочки «Add README», «Add .gitignore», «Add license». Иначе на сервере создадутся коммиты, которых нет у вас локально, и первый `push` не пройдёт без дополнительных манипуляций. + +=== Шаг 6. Привязать remote и запушить + +GitHub на странице пустого репозитория покажет готовые команды, они выглядят так: + +[,console] +---- +$ git remote add origin git@github.com:username/my-project.git +$ git branch -M main <1> +$ git push -u origin main <2> +---- +<1> Переименовать текущую ветку в `main` (на случай, если она называется `master`). +<2> Флаг `-u` (`--set-upstream`) запоминает связь `main → origin/main`, чтобы дальше можно было писать просто `git push` и `git pull` без указания ветки. diff --git a/modules/ROOT/pages/git/gl-gh.adoc b/modules/ROOT/pages/git/gl-gh.adoc new file mode 100644 index 0000000..a59865d --- /dev/null +++ b/modules/ROOT/pages/git/gl-gh.adoc @@ -0,0 +1,38 @@ += GitHub & GitLab +:page-authors: Виктория Попова, Иван Калинин +:description: GitHub & GitLab + + +== gh и glab: работа с GitHub/GitLab из терминала + +Стандартный `git` знает только про репозитории и коммиты. Всё, что вокруг них - Pull Request, issues, actions, releases, - это надстройки конкретных сервисов, и до недавнего времени с этим приходилось лезть в браузер. + +Официальные CLI-утилиты закрывают эту дыру: + +* `gh` для GitHub - https://cli.github.com; +* `glab` для GitLab - https://gitlab.com/gitlab-org/cli. + +Что можно делать из терминала: + +[,console] +---- +$ gh auth login <1> +$ gh repo clone user/project <2> +$ gh repo create my-project --public <3> +$ gh pr create --fill <4> +$ gh pr list <5> +$ gh pr checkout 42 <6> +$ gh pr review --approve <7> +$ gh issue list +$ gh run watch <8> +---- +<1> Один раз залогиниться в GitHub. +<2> То же, что `git clone`, но короче. +<3> Создать репу и сразу привязать remote. +<4> Создать PR из текущей ветки, заголовок и описание взять из последнего коммита. +<5> Список открытых PR. +<6> Переключиться на ветку PR #42, даже если она в чужом fork. +<7> Заапрувить PR прямо из терминала. +<8> Смотреть, как крутится CI. + +`glab` устроен в целом точно так же, только для GitLab. \ No newline at end of file diff --git a/modules/ROOT/pages/git/hooks.adoc b/modules/ROOT/pages/git/hooks.adoc new file mode 100644 index 0000000..5cb4183 --- /dev/null +++ b/modules/ROOT/pages/git/hooks.adoc @@ -0,0 +1,35 @@ += Git hooks +:page-authors: Виктория Попова +:description: Git. Hooks + +== Хуки (git hooks) + +Хук - это скрипт, который Git запускает автоматически в определённый момент: перед коммитом, после мержа, перед пушем. Живут в `.git/hooks/`. + +Примеры полезных хуков: + +* `pre-commit` - запустить линтер или быстрые тесты перед коммитом, отменить коммит если что-то сломано. +* `commit-msg` - проверить формат сообщения (например, чтобы был указан номер задачи). +* `pre-push` - запустить полные тесты перед push. + +По умолчанию в `.git/hooks/` лежат примеры с расширением `.sample`. Чтобы включить хук, нужно переименовать (убрать `.sample`) и сделать исполняемым: + +[,console] +---- +$ mv .git/hooks/pre-commit.sample .git/hooks/pre-commit +$ chmod +x .git/hooks/pre-commit +---- + +Простейший `pre-commit`, который запрещает коммитить в `main`: + +[,bash] +---- +#!/bin/bash +branch=$(git symbolic-ref HEAD | sed 's|refs/heads/||') +if [ "$branch" = "main" ]; then + echo "DO NOT COMMIT TO MAIN SOS ALARM WAIT BRO" + exit 1 +fi +---- + +WARNING: Папка `.git/hooks/` не версионируется - она лежит внутри `.git`, а он в репозиторий не входит. Каждый разработчик ставит хуки себе сам. Чтобы синхронизировать команду, используют инструменты вроде *pre-commit*: конфиг лежит в самом репо, хуки ставятся автоматически при `install`. diff --git a/modules/ROOT/pages/git/internals.adoc b/modules/ROOT/pages/git/internals.adoc new file mode 100644 index 0000000..9087780 --- /dev/null +++ b/modules/ROOT/pages/git/internals.adoc @@ -0,0 +1,103 @@ += Internals +:page-authors: Виктория Попова +:description: Git. Внутреннее устройство + + +== Как устроен .git изнутри + +Мы люди уважающие себя, умеем уже пользоваться терминалом (пожалуйста, не коммитьте через веб-интерфейс), давайте заглянем в `.git/`. Понимание внутренностей сильно упрощает жизнь: становится ясно, почему `checkout` быстрый, что такое хэш и как reflog спасает после `reset --hard`. + +=== .git/objects/ + +Здесь лежат *все* данные репозитория: коммиты, деревья, содержимое файлов. Каждый объект это gzip-сжатый файл, названный своим SHA-1 хэшем. Первые 2 символа хэша - имя папки, остальные - имя файла: + +[,console] +---- +$ ls .git/objects +3f/ c4/ d5/ ... +$ ls .git/objects/3f +2a1b0e5d8f4a9c... +---- + +Посмотреть содержимое объекта: + +[,console] +---- +$ git cat-file -t 3f2a1b0 <1> +$ git cat-file -p 3f2a1b0 <2> +---- +<1> Тип объекта: `blob`, `tree`, `commit`, `tag`. +<2> Содержимое (уже разжатое). + +Всего 4 типа объектов: + +* *blob* - содержимое файла (без имени файла - имя лежит в дереве); +* *tree* - список файлов и подпапок (имена + хэши blob'ов и поддеревьев); +* *commit* - указатель на tree корня + автор + сообщение + хэши родителей; +* *tag* - аннотированный тег. + +Обычная ветка `main` при этом это просто файл `.git/refs/heads/main`, содержащий хэш коммита. Всё, никакой магии. + +=== Pack-файлы и git gc + +Если хранить по отдельному файлу на каждый объект, репозиторий разрастётся до миллионов файлов. Git время от времени пакует объекты в компактные *pack-файлы* (`.git/objects/pack/`) и удаляет свободные копии. + +Вручную запустить упаковку и уборку мусора: + +[,console] +---- +$ git gc +---- + +`gc` заодно удаляет *недостижимые* объекты - те, до которых нельзя добраться ни от одной ветки, тега или reflog. Например, коммиты, которые вы сбросили через `git reset --hard`, ещё какое-то время лежат в `.git/objects` (и их можно восстановить), но потом `gc` их окончательно удалит. + +=== .git/refs/ + +Все ссылки: ветки, теги, remote-ветки. + +[,console] +---- +$ ls .git/refs +heads/ remotes/ tags/ +$ cat .git/refs/heads/main +3f2a1b0e5d8f4a9c... +---- + +Файл `.git/HEAD` содержит либо `ref: refs/heads/branch-name` (когда HEAD указывает на ветку), либо сразу хэш коммита (detached HEAD). + +=== .git/logs/ и reflog + +Здесь лежит *reflog* - лог всех движений HEAD и веток. Каждый раз, когда вы делаете `commit`, `checkout`, `reset`, `merge`, `rebase`, в reflog записывается строчка. + +[,console] +---- +$ git reflog +c4d5e6f HEAD@{0}: commit: Add login +3f2a1b0 HEAD@{1}: reset: moving to HEAD~1 +5a6b7c8 HEAD@{2}: commit: Broken commit +---- + +Reflog *локальный*, живёт около 90 дней и это ваша страховка от катастроф. Даже если вы сделали `git reset --hard` и «потеряли» коммиты, они ещё в reflog - можно восстановить: + +[,console] +---- +$ git reset --hard HEAD@{2} +---- + +Ваня, потерявший свой detached HEAD, скорее всего мог всё вернуть через reflog. Знал бы - не потерял бы полдня. + +=== Внимание: git push -f не гарантирует удаление данных на сервере + +Есть распространённое заблуждение: «я запушил секретный токен в репозиторий, сейчас сделаю `git reset` + `git push --force`, и всё, следов не останется». Это не так, и на этом периодически горят даже опытные ребята, их потом сливают в даркнет. + +Что происходит на самом деле: + +. Вы сбрасываете локальную ветку и делаете force-push. Да, ветка на сервере теперь указывает на другой коммит, без ваших секретов. +. Но старые коммиты никуда не деваются: они остаются в `.git/objects` на сервере, потому что на них могут ещё указывать pull request'ы, кэши CI, форки, чей-то reflog. +. GitHub и GitLab держат «висячие» коммиты доступными по прямому URL с хэшем ещё долгое время. Условный `github.com/user/repo/commit/3f2a1b0` продолжит открываться. +. Если кто-то успел склонировать репозиторий или сделать fork - у него все ваши секреты и в объектах, и в reflog. И он о них скорее всего даже не знает. +. Боты и сервисы вроде GitHub secret scanning мониторят публичные репозитории в реальном времени и могли скачать секрет за те несколько минут, что он висел в открытом доступе. + +Вывод: если утёк ключ, токен или пароль - *немедленно отзывайте / меняйте сам ключ*, а не пытайтесь стереть его из истории. Все считаем данные утёкшими, ротируем, идём дальше. + +Отдельно почистить историю можно инструментами вроде `git filter-repo` или `BFG Repo-Cleaner` и попросить поддержку GitHub удалить кэши - но это уже post-mortem, а не защита. Так что тип всё, данные утекли. diff --git a/modules/ROOT/pages/git/lfs.adoc b/modules/ROOT/pages/git/lfs.adoc new file mode 100644 index 0000000..c96a140 --- /dev/null +++ b/modules/ROOT/pages/git/lfs.adoc @@ -0,0 +1,36 @@ += Git LFS +:page-authors: Виктория Попова +:description: Git. LFS + +== Git LFS (Large File Storage) + +Git плохо работает с большими бинарниками. Если закоммитить файл на 100 МБ, каждый клон репозитория будет тянуть эти 100 МБ, даже если файл сто раз с тех пор поменяли - Git хранит все версии. +Заливать бинари на git - принцип плохого тона. +Git LFS решает это: вместо самого файла Git хранит маленькую метку-указатель, а сам файл лежит на отдельном сервере и скачивается по запросу. + +Установка (один раз на систему): + +[,console] +---- +$ git lfs install +---- + +Настройка в конкретном репозитории: + +[,console] +---- +$ git lfs track "*.psd" <1> +$ git lfs track "*.mp4" +$ git add .gitattributes <2> +$ git add file.psd +$ git commit -m "Add design file" +---- +<1> Все `.psd` теперь идут через LFS. +<2> LFS запишет свои настройки сюда, надо закоммитить. + +Что уже под LFS: + +[,console] +---- +$ git lfs ls-files +---- diff --git a/modules/ROOT/pages/git/merge.adoc b/modules/ROOT/pages/git/merge.adoc new file mode 100644 index 0000000..c208d2a --- /dev/null +++ b/modules/ROOT/pages/git/merge.adoc @@ -0,0 +1,95 @@ += Merge changes +:page-authors: Виктория Попова +:description: Git. Объединение изменений веток + + + +== Merge, rebase, cherry-pick + +Три способа перенести изменения из одной ветки в другую. Разница между ними это одна из самых частых тем на собеседованиях, поэтому разберём подробно. + +=== Merge + +Объединяет две ветки, создавая новый *merge-коммит* с двумя родителями: + +[,console] +---- +$ git switch main +$ git merge feature-x +---- + +Если `main` не двигалась с момента ответвления feature-x, merge будет *fast-forward*: main просто «догонит» feature-x, никакого нового коммита не создастся. Если main тоже уходила вперёд - создастся merge-коммит. + +Плюс merge: сохраняет полную историю «как было на самом деле». Минус: история становится ветвистой, и в `git log` без графа выглядит запутанно. + +=== Rebase + +«Отрывает» ваши коммиты и переносит их поверх другой ветки: + +[,console] +---- +$ git switch feature-x +$ git rebase main +---- + +Было: + +[,text] +---- + A---B---C feature-x + / +D---E---F main +---- + +Стало: + +[,text] +---- + A'--B'--C' feature-x + / +D---E---F main +---- + +Коммиты `A'`, `B'`, `C'` - новые, со своими хэшами (даже если содержимое такое же). История линейная и красивая, но переписанная. + +=== Interactive rebase - швейцарский нож + +Самая мощная штука, которая есть в Git. Позволяет редактировать, объединять, переставлять, удалять коммиты: + +[,console] +---- +$ git rebase -i HEAD~5 +---- + +Откроется редактор со списком последних 5 коммитов и командами: + +* `pick` - оставить как есть; +* `reword` - изменить сообщение; +* `edit` - остановиться на этом коммите, чтобы что-то поменять в файлах; +* `squash` - слить с предыдущим (сообщения объединятся); +* `fixup` - как `squash`, но сообщение выбросить (часто именно то, что нужно); +* `drop` - удалить коммит; +* поменять местами строки - поменяются местами и коммиты. + +Полезно перед созданием Pull Request: подчистить историю, слить мелкие «fix» коммиты, переформулировать сообщения. + +=== Cherry-pick + +Взять один конкретный коммит и применить его к текущей ветке: + +[,console] +---- +$ git cherry-pick 3f2a1b0 +$ git cherry-pick 3f2a1b0..c4d5e6f <1> +---- +<1> Диапазон коммитов. + +Полезно, когда, например, нужно перенести один хотфикс из main в старую релизную ветку, но остальные изменения из main трогать нельзя. + +=== Что когда использовать (кратко) + +* Ваша ветка локальная или живёт только в вашем fork - смело `rebase`. +* Ветка общая, на неё смотрит кто-то ещё - только `merge`. Иначе сломаете коллегам историю. +* Нужен один конкретный коммит из другой ветки - `cherry-pick`. + +CAUTION: `rebase` и `cherry-pick` создают *новые* коммиты с новыми хэшами. Если делать это с уже запушенными коммитами, потом придётся `push --force`, а это плохо (см. дальше). diff --git a/modules/ROOT/pages/git/monitor.adoc b/modules/ROOT/pages/git/monitor.adoc new file mode 100644 index 0000000..7fc37f9 --- /dev/null +++ b/modules/ROOT/pages/git/monitor.adoc @@ -0,0 +1,105 @@ += Monitor your repo +:page-authors: Виктория Попова +:description: Git. Мониторинг + + + +== Мониторинг: смотрим, что происходит + +Пока писали код, стало ничего не понятно: где мы, что поменяли, кто это вообще написал. Для всего этого у Git есть куча команд. +Или пришел ваш коллега и накоммитил кучу файлов, вообще запутались. + +=== git status + +Первая команда, которую вы будете вводить сотни раз в день. Показывает: + +* на какой вы ветке; +* какие файлы изменены, но не добавлены в индекс; +* какие файлы уже в индексе, ждут коммита; +* какие файлы Git вообще не знает. + +Правило: перед каждым `git add` и перед каждым `git commit` - `git status`. Ваня забил на это правило и запушил в main файл с логинами тестовой БД. Не будьте как Ваня. + +=== git log + +История коммитов. Флагов у него куча, самое полезное: + +[,console] +---- +$ git log --oneline <1> +$ git log --graph --all <2> +$ git log --stat <3> +$ git log -p <4> +$ git log --author="Ivan" <5> +$ git log --grep="fix" <6> +$ git log main..feature <7> +---- +<1> Компактно, по коммиту в строку. +<2> ASCII-график веток. +<3> Плюс список изменённых файлов в каждом коммите. +<4> Плюс сам diff каждого коммита. +<5> Только коммиты определённого автора. +<6> Только коммиты, у которых в сообщении встречается слово. +<7> Что есть в feature, но нет в main. + +Красивый набор для ежедневного использования: + +[,console] +---- +$ git log --oneline --graph --decorate --all +---- + +Такое длинно писать каждый раз лень, поэтому обычно ставят алиас: + +[,console] +---- +$ git config --global alias.lg "log --oneline --graph --decorate --all" +$ git lg +---- + +=== git show + +Подробности одного коммита: автор, дата, сообщение, полный diff: + +[,console] +---- +$ git show HEAD +$ git show 3f2a1b0 +$ git show HEAD:path/to/file.py <1> +---- +<1> Версия файла в этом коммите (без diff-а, просто содержимое). + +=== git blame + +Показывает, кто и в каком коммите написал каждую строку файла. Незаменимая штука, когда смотришь на непонятный кусок кода и хочешь понять, «кто это придумал»: + +[,console] +---- +$ git blame main.py +3f2a1b0 (Ivan 2026-06-15) def calculate_total(items): +c4d5e6f (Anna 2026-06-18) return sum(item.price for item in items) +---- + +Ваня использует `blame`, чтобы понять, кому отправлять баг-репорт. + +=== git bisect + +Двоичный поиск сломавшего коммита. Незаменим в ситуации «неделю назад работало, сегодня нет, а коммитов между ними полсотни»: + +[,console] +---- +$ git bisect start +$ git bisect bad <1> +$ git bisect good 3f2a1b0 <2> +# git переключается на коммит посередине, +# вы проверяете, работает или нет: +$ git bisect good <3> +# git продолжает делить пополам, пока не найдёт первый плохой +$ git bisect reset <4> +---- +<1> Текущий коммит сломан. +<2> А вот этот работал. +<3> Или `git bisect bad`, в зависимости от результата проверки. +<4> Выйти из режима bisect и вернуться на свою ветку. + +Логарифм вместо линейного перебора, очень удобно. (Надеюсь, вы знаете в чем разница...) diff --git a/modules/ROOT/pages/git/refs.adoc b/modules/ROOT/pages/git/refs.adoc new file mode 100644 index 0000000..67a08c1 --- /dev/null +++ b/modules/ROOT/pages/git/refs.adoc @@ -0,0 +1,97 @@ += References +:page-authors: Виктория Попова +:description: Git. Ссылки + +== Ветки: подробнее + +Ветка в Git - это просто подвижный указатель на коммит. Никакого волшебства: файлик в `.git/refs/heads/` с хэшем внутри. Создавать их дёшево, поэтому не стесняйтесь. + +=== Создание, переключение, удаление + +[,console] +---- +$ git branch feature-x <1> +$ git switch -c feature-x <2> +$ git checkout -b feature-x <3> +---- +<1> Создать, но не переключаться. +<2> Создать и сразу переключиться (современный способ). +<3> То же самое, старый способ. `checkout` умеет много всего, поэтому в новых версиях его разделили на `switch` (переключение веток) и `restore` (восстановление файлов). + +[,console] +---- +$ git branch <1> +$ git branch -r <2> +$ git branch -a <3> +$ git branch -v <4> +---- +<1> Локальные ветки. +<2> Удалённые. +<3> Все. +<4> Плюс последний коммит в каждой. + +[,console] +---- +$ git branch -d feature-x <1> +$ git branch -D feature-x <2> +$ git branch -M new-name <3> +---- +<1> Удалить ветку, если она уже смержена. +<2> Удалить принудительно (даже если есть незамерженные коммиты). +<3> Переименовать текущую ветку. + +=== HEAD, ~ и ^ + +`HEAD` - указатель на текущий коммит. Обычно он указывает на ветку, а ветка - на коммит. + +От любого коммита можно ходить назад через `~` и `^`: + +* `HEAD~1` - на один коммит назад от HEAD (родитель). +* `HEAD~2` - на два коммита назад. +* `HEAD^` - то же, что `HEAD~1`. Но если у коммита несколько родителей (например, merge-коммит), `HEAD^1` это первый родитель, `HEAD^2` - второй. +* `HEAD~2^2` - можно комбинировать. + +Правило-подсказка: `~` идёт вглубь по истории, `^` выбирает родителя, если их несколько. + +Работает не только с HEAD, а с любым коммитом или веткой: `main~3`, `feature-x^`. + +=== Detached HEAD + +Обычно HEAD указывает на ветку. Но если сделать `git checkout` на конкретный коммит (по хэшу или тегу), HEAD будет указывать прямо на него, минуя ветку. Это состояние называется *detached HEAD*, «оторванная голова»: + +[,console] +---- +$ git checkout 3f2a1b0 +Note: switching to '3f2a1b0'. +You are in 'detached HEAD' state... +---- + +В этом состоянии можно смотреть код, экспериментировать, даже коммитить. Но если переключиться на другую ветку, эти коммиты потеряются - на них не будет никакого указателя, и через некоторое время `git gc` их удалит. Если что-то нужно сохранить, создайте из этого места ветку: + +[,console] +---- +$ git switch -c experiment +---- + +Ваня как-то полдня фиксил баг в detached HEAD, потом переключился на main «проверить кое-что» и всё потерял. Не будьте как Ваня. Впрочем, если очень надо - см. раздел про `reflog` ниже, обычно данные ещё можно вытащить. + +=== Теги + +Тег - именованный указатель на коммит, но, в отличие от ветки, он не двигается. + +[,console] +---- +$ git tag v1.0.0 <1> +$ git tag -a v1.0.0 -m "Release" <2> +$ git tag <3> +$ git show v1.0.0 <4> +$ git push origin v1.0.0 <5> +$ git push origin --tags <6> +---- +<1> Лёгкий тег - просто ссылка на коммит. +<2> Аннотированный тег - отдельный объект с автором, датой и сообщением. Для релизов используют именно такие. +<3> Список всех тегов. +<4> Показать, что за коммит помечен. +<5> Запушить конкретный тег. Обычный `git push` теги не отправляет! +<6> Запушить все теги. + diff --git a/modules/ROOT/pages/git/remotes.adoc b/modules/ROOT/pages/git/remotes.adoc new file mode 100644 index 0000000..8f47735 --- /dev/null +++ b/modules/ROOT/pages/git/remotes.adoc @@ -0,0 +1,244 @@ += Remotes +:page-authors: Виктория Попова +:description: Git. Удаленные репозитории + +== Работа с удалённым репозиторием + +Remote:: +Ссылка на удалённый репозиторий. Стандартное имя - `origin`. ++ +[,console] +---- +$ git remote -v +origin git@github.com:username/project.git (fetch) +origin git@github.com:username/project.git (push) +---- + +Clone:: +Скачать удалённый репозиторий к себе на компьютер вместе со всей историей. ++ +[,console] +---- +$ git clone git@github.com:username/project.git +Cloning into 'project'... +---- + +Fork:: +Своя копия чужого репозитория на сервере (термин GitHub/GitLab, не самого Git). Делается кнопкой *Fork* на странице репозитория - у команды `git` аналога нет. + +Push:: +Отправить свои локальные коммиты в удалённый репозиторий. ++ +[,console] +---- +$ git push origin main +---- + +Pull:: +Забрать изменения с удалённого репозитория и сразу применить их к своей ветке (по сути `fetch` + `merge`). ++ +[,console] +---- +$ git pull origin main +---- + +Fetch:: +Забрать изменения с удалённого репозитория, но не применять их к рабочей ветке. ++ +[,console] +---- +$ git fetch origin +---- + +Pull request (PR) / Merge request (MR):: +Запрос на слияние ваших изменений в чужую или основную ветку. Мы так, например, ревьювим кода на GitHub/GitLab. На работе тоже будете создавать реквесты. Создаётся через веб-интерфейс сервиса. + +== Работа с удалёнными репозиториями: подробнее + +Про `git push`, `git pull` и `git fetch` вы уже видели. Теперь несколько деталей, о которых часто забывают. + +=== Что делает push + +Обычно достаточно просто `git push`, если ветка уже связана с удалённой (через `-u` при первом пуше): + +[,console] +---- +$ git push <1> +$ git push origin feature-x <2> +$ git push -u origin feature-x <3> +---- +<1> Текущую ветку в её upstream. +<2> Явно указать remote и ветку. +<3> То же самое, плюс запомнить связь `feature-x → origin/feature-x`. + +=== fetch vs pull + +`fetch` скачивает данные с сервера, но ничего не трогает в ваших ветках. После fetch у вас обновляются указатели `origin/main`, `origin/feature-x`, и можно посмотреть, что там прилетело, прежде чем сливать к себе: + +[,console] +---- +$ git fetch origin +$ git log HEAD..origin/main <1> +---- +<1> Показать, что нового в origin/main по сравнению с текущей веткой. + +`pull` = `fetch` + автоматическое применение изменений. По умолчанию через merge, но можно и через rebase: + +[,console] +---- +$ git pull <1> +$ git pull --rebase <2> +$ git config --global pull.rebase true <3> +---- +<1> `fetch` + `merge`. +<2> `fetch` + `rebase`. +<3> Чтобы rebase был по умолчанию всегда. + +Разница на пальцах: + +* `pull` (через merge) - проще, но каждый раз создаёт merge-коммиты вида «Merge branch 'main' of ...». История становится ветвистой и грязной. +* `pull --rebase` - переносит ваши локальные коммиты поверх свежих чужих. История линейная, но ваши коммиты меняют хэши. Не критично, пока эти коммиты не запушены. + +В большинстве команд негласно принят `pull --rebase`, потому его обычно включают глобально. + +=== Upstream и трекинг веток + +Каждая локальная ветка может быть *связана* с удалённой - это называется *upstream*. Связь настраивается флагом `-u` (он же `--set-upstream`) при первом push: + +[,console] +---- +$ git push -u origin feature-x +---- + +После этого: + +* `git status` показывает `ahead 2, behind 1` - на сколько коммитов вы обогнали удалённую и сколько отстали. +* `git pull` и `git push` работают без аргументов. +* Можно писать `@\{upstream}` (или короче `@\{u}`) вместо `origin/feature-x`. + +Посмотреть связи: + +[,console] +---- +$ git branch -vv +* feature-x c4d5e6f [origin/feature-x: ahead 2] Add login + main 3f2a1b0 [origin/main] Initial commit +---- + +Управлять связью: + +[,console] +---- +$ git branch --set-upstream-to=origin/other-branch <1> +$ git branch --unset-upstream <2> +---- +<1> Изменить upstream уже существующей ветки. +<2> Отвязать. + +=== Удаление удалённой ветки + +[,console] +---- +$ git push origin --delete feature-x +---- + +Или короче, но менее очевидно: + +[,console] +---- +$ git push origin :feature-x +---- + +Пустое имя перед двоеточием означает «запушить пустоту в feature-x», то есть удалить её. + +=== Синхронизация с несколькими remote (fork + upstream) + +Классическая схема для open-source: у вас есть свой fork (`origin`) и оригинал (`upstream`): + +[,console] +---- +$ git remote add upstream git@github.com:owner/project.git +$ git fetch upstream <1> +$ git switch main +$ git rebase upstream/main <2> +$ git push <3> +---- +<1> Забрать свежие изменения из оригинала. +<2> Обновить свою main поверх оригинала. +<3> Запушить обновлённую main в свой fork. + + +== Как залить существующий локальный проект на GitHub + +Если у вас уже есть папка с кодом, но без Git: + +[,console] +---- +$ cd существующий-проект +$ git init +$ echo "node_modules/" > .gitignore <1> +$ git add . +$ git commit -m "Initial commit" +$ git branch -M main +$ git remote add origin git@github.com:username/project.git +$ git push -u origin main +---- +<1> Обязательно перед `git add .` - иначе всё лишнее попадёт в первый коммит, и вычистить его оттуда потом будет непросто. + +Если репозиторий уже был инициализирован раньше и нужно только привязать его к remote: + +[,console] +---- +$ git remote add origin git@github.com:username/project.git +$ git push -u origin main +---- + +== Как склонировать чужой репозиторий и работать в нём + +[,console] +---- +$ git clone git@github.com:someuser/cool-project.git +$ cd cool-project +---- + +Дальше есть два сценария в зависимости от того, есть ли у вас права на push. + +=== Сценарий 1. У вас есть права (свой проект, командная разработка) + +Не работайте прямо в `main` - заведите отдельную ветку под каждую задачу, в проде не принято все пушить в 'main': + +[,console] +---- +$ git checkout -b feature/login <1> +# ...пишете код, коммитите... +$ git push -u origin feature/login <2> +---- +<1> Создать ветку и сразу переключиться на неё. Эквивалент: `git switch -c feature/login`. +<2> Первый `push` новой ветки - с `-u`, чтобы связать её с одноимённой веткой на сервере. + +После этого на GitHub заходите в репозиторий и создаёте *Pull Request* из вашей ветки в `main`. + +=== Сценарий 2. У вас нет прав (open source, чужой проект) + +Здесь используется механизм *fork*: + +. На GitHub нажимаете *Fork* - появляется ваша копия репозитория. +. Клонируете *свой fork*, а не оригинал: ++ +[,console] +---- +$ git clone git@github.com:ВАШ_username/cool-project.git +---- +. Часто добавляют второй remote с именем `upstream`, указывающий на оригинал - чтобы забирать оттуда свежие изменения: ++ +[,console] +---- +$ git remote add upstream git@github.com:someuser/cool-project.git +$ git fetch upstream +$ git merge upstream/main +---- +. Работу ведёте в отдельной ветке, пушите в свой fork, оттуда создаёте Pull Request в оригинальный репозиторий. + + + + diff --git a/modules/ROOT/pages/git/special-files.adoc b/modules/ROOT/pages/git/special-files.adoc new file mode 100644 index 0000000..7b8bdbc --- /dev/null +++ b/modules/ROOT/pages/git/special-files.adoc @@ -0,0 +1,33 @@ += Special files +:page-authors: Виктория Попова +:description: Git. gitignore. gitkeep + + +== Игнорирование файлов: .gitignore и .gitkeep + +`.gitignore` мы уже видели. Ещё немного полезного синтаксиса: + +[,bash] +---- +build/ # всё в этой папке +*.log # конкретное расширение +!important.log # но не этот файл (отрицание) +/config.yaml # только в корне репозитория +**/tmp/ # в любой папке +---- + +Порядок правил важен: последнее правило, подходящее под путь, побеждает. + +*Важный подвох*: `.gitignore` работает только для *ещё не отслеживаемых* файлов. Если вы уже закоммитили `secrets.txt`, добавление его в `.gitignore` ничего не изменит - Git продолжит за ним следить. Чтобы перестать отслеживать, но оставить на диске: + +[,console] +---- +$ git rm --cached secrets.txt +$ git commit -m "Stop tracking secrets" +---- + +=== Хитрость с .gitkeep + +Git не умеет отслеживать пустые папки, он вообще работает только с файлами. А иногда пустая папка нужна (например, `logs/`, куда программа будет писать при запуске). Общепринятый трюк: положить внутрь пустой файл `.gitkeep`. + +Никакой магии тут нет: `.gitkeep` это не команда Git и не что-то встроенное. Это просто конвенция, договорённость называть такие файлы именно так. Можно назвать хоть `.please_keep_me` - работать будет одинаково. diff --git a/modules/ROOT/pages/git/stash.adoc b/modules/ROOT/pages/git/stash.adoc new file mode 100644 index 0000000..49d5399 --- /dev/null +++ b/modules/ROOT/pages/git/stash.adoc @@ -0,0 +1,42 @@ += Stash +:page-authors: Виктория Попова +:description: Git. Stash + +== Stash: временно спрятать изменения + +Ситуация: вы работаете над задачей, у вас куча несохранённых изменений, и тут срочно нужно переключиться на другую ветку и что-то починить. Коммитить пока рано (код не готов), а изменения потерять нельзя. + +Тут спасает `stash`: + +[,console] +---- +$ git stash <1> +$ git switch main <2> +# ... делаем срочные дела, коммитим ... +$ git switch feature-x <3> +$ git stash pop <4> +---- +<1> Спрятать все изменения (рабочая директория чистая). +<2> Переключиться на другую ветку и работать там. +<3> Вернуться на свою задачу. +<4> Вернуть спрятанные изменения обратно. + +Другие полезные команды: + +[,console] +---- +$ git stash list <1> +$ git stash show <2> +$ git stash apply <3> +$ git stash drop <4> +$ git stash push -m "wip: login" <5> +$ git stash push path/to/file.py <6> +---- +<1> Что у нас в загашнике. +<2> Какие файлы изменены в последнем stash. +<3> Применить, но не удалять из stash. +<4> Удалить последний stash. +<5> Спрятать с сообщением - потом легче найти. +<6> Спрятать только один файл. + +Stash - штука отдельная, не привязанная к ветке. Можно спрятать в одной, применить в другой. diff --git a/modules/ROOT/pages/git/submodules.adoc b/modules/ROOT/pages/git/submodules.adoc new file mode 100644 index 0000000..b47cdac --- /dev/null +++ b/modules/ROOT/pages/git/submodules.adoc @@ -0,0 +1,31 @@ += Submodules +:page-authors: Виктория Попова +:description: Git. Сабмодули + + +== Сабмодули (submodules) + +Иногда нужно включить один Git-репозиторий в состав другого - например, общую библиотеку, которая живёт отдельно. Для этого есть *сабмодули*: + +[,console] +---- +$ git submodule add git@github.com:user/library.git libs/library +---- + +Внутри вашего репозитория появится папка `libs/library` с содержимым другого репозитория, а сам факт «здесь сабмодуль на такой-то коммит такого-то репозитория» запишется в файл `.gitmodules` (его надо закоммитить). + +Клонирование репозитория с сабмодулями: + +[,console] +---- +$ git clone --recurse-submodules git@github.com:user/project.git +# или, если забыли: +$ git submodule update --init --recursive +---- + +Обновить сабмодули до свежих версий из их удалённых репозиториев: + +[,console] +---- +$ git submodule update --remote +---- diff --git a/modules/ROOT/pages/git/trees.adoc b/modules/ROOT/pages/git/trees.adoc new file mode 100644 index 0000000..02b07cb --- /dev/null +++ b/modules/ROOT/pages/git/trees.adoc @@ -0,0 +1,76 @@ += Three trees +:page-authors: Виктория Попова +:description: Git. Три дерева гита + + +== Три дерева Git, reset и revert + +Чтобы понять, что делают `reset` и `revert`, надо разобраться с *тремя деревьями* Git. + +=== Три дерева + +*Три дерева* - это три состояния файлов, которые Git одновременно держит в голове: + +* *HEAD* - что записано в последнем коммите текущей ветки. +* *Index* (staging area) - что готовится к следующему коммиту. +* *Working directory* - что реально лежит в файлах на диске. + +Обычный цикл работы двигает файлы по этим уровням слева направо: + +[,text] +---- +working directory --git add--> index --git commit--> HEAD +---- + +* `git add` берёт изменения из working directory и кладёт в index. +* `git commit` берёт то, что в index, и записывает в новый коммит, на который начинает указывать HEAD. + +`git reset` двигает всё это обратно. + +=== Три режима reset + +У `reset` три режима, которые отличаются тем, что именно он трогает: + +* `--soft` - двигает только указатель ветки (и HEAD) на нужный коммит. Index и working directory не трогает. Все ваши изменения остаются в индексе, как будто вы их только что `git add`-нули. +* `--mixed` (по умолчанию) - двигает HEAD и сбрасывает индекс, но working directory не трогает. Изменения остаются в файлах, но теперь их надо снова добавлять командой `git add`. +* `--hard` - двигает всё три уровня. Все изменения после этого коммита теряются. Совсем. Даже из файлов на диске. + +Пример: у вас три коммита A - B - C, вы стоите на C. + +[,console] +---- +$ git reset --soft HEAD~1 <1> +$ git reset HEAD~1 <2> +$ git reset --hard HEAD~1 <3> +---- +<1> HEAD на B, но изменения B→C лежат в индексе, готовы к новому коммиту. +<2> HEAD на B, изменения B→C в рабочей директории, но не в индексе. +<3> HEAD на B, всё удалено. Осторожно! + +Ещё один трюк: + +[,console] +---- +$ git reset HEAD file.py <1> +$ git restore --staged file.py <2> +---- +<1> Убрать файл из индекса, не трогая содержимое. Полезно, когда `git add` захватил лишнее. +<2> То же самое современным способом. + +=== Reset vs revert + +Кратко: + +* `reset` двигает указатель ветки назад, как будто коммитов не было. Историю *переписывает*. +* `revert` не трогает историю. Он делает *новый* коммит, который применяет обратные изменения к указанному: + +[,console] +---- +$ git revert HEAD <1> +$ git revert 3f2a1b0 <2> +---- +<1> Отменить последний коммит новым коммитом. +<2> Отменить произвольный коммит из истории. + +Правило: если коммит уже на сервере и его видели другие, только `revert`. `reset` в этом случае сломает историю всем, кто уже успел склонировать. + diff --git a/modules/ROOT/pages/protocol/ssh-keys.adoc b/modules/ROOT/pages/protocol/ssh-keys.adoc index 2cbe71b..e5bf2fc 100644 --- a/modules/ROOT/pages/protocol/ssh-keys.adoc +++ b/modules/ROOT/pages/protocol/ssh-keys.adoc @@ -1,5 +1,5 @@ = SSH ключи -:page-authors: Иван Калинин +:page-authors: Иван Калинин, Виктория Попова :description: SSH ключи. Утилита ssh-keygen == Host keys @@ -107,6 +107,55 @@ qwerty qwerty.pub CAUTION: Если вы забыли пароль к ключу, то восстановить его не получится и придется перегенерировать. +== SSH Agent + +`ssh-agent` - это фоновый процесс, который держит расшифрованный ключ в памяти, чтобы не вводить passphrase каждый раз: + +[,console] +---- +$ eval "$(ssh-agent -s)" +Agent pid 12345 +$ ssh-add ~/.ssh/id_ed25519 +---- + + +== Публикация ключа на GitHub + +Скопируйте содержимое *публичного* ключа - это файл с расширением `.pub`. *Никогда* не публикуйте файл без `.pub` - это приватный ключ: + +[,console] +---- +$ cat ~/.ssh/id_ed25519.pub +ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAI... ivan@example.com +---- + +Затем на GitHub: *Settings \-> SSH and GPG keys \-> New SSH key*, вставьте содержимое в поле *Key*, придумайте название (обычно имя компьютера) и сохраните. + +== Публикация ключа на GitLab + +Скопируйте содержимое *публичного* ключа - это файл с расширением `.pub`. *Никогда* не публикуйте файл без `.pub` - это приватный ключ: + +image::git/gl-navbar-avatar.png[width=150,float=right] + +[,console] +---- +$ cat ~/.ssh/id_ed25519.pub +ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAI... ivan@example.com +---- + + +Затем на GitLab нажмите на аватарку в верхней панели: *Edit profile \-> Access \-> SSH keys \-> Add new key*, вставьте содержимое в поле *Key*, придумайте название (обычно имя компьютера) и сохраните. + +== Проверка соединения + +[,console] +---- +$ ssh -T git@github.com +Hi username! You've successfully authenticated, but GitHub does not provide shell access. +---- + +Если увидели такое сообщение - всё работает. При первом соединении Git спросит, доверяете ли вы отпечатку сервера - отвечайте `yes`. + == Read more * xref:crypto/sign.adoc[] diff --git a/modules/ROOT/pages/protocol/ssh.adoc b/modules/ROOT/pages/protocol/ssh.adoc new file mode 100644 index 0000000..e69de29