Внутреннее устройство Git
Внутренности .git и алиасы
Папка .git
Когда вы инициализируете репозиторий с помощью git init, создаётся скрытая папка .git. Это всё, что Git использует для отслеживания изменений.
| Файл/Папка | Описание |
|---|---|
| HEAD | Указывает на текущую ветку или коммит (если detached). Обычно содержит ссылку на refs/heads/<branch>. Например, refs/heads/main содержит SHA-1 последнего коммита на ветке main. |
| config | Конфигурационный файл локального репозитория (имя пользователя, remote-репозитории и т.д.). Пример содержимого: [user] name = John Doe email = john@example.com [remote "origin"] url = https://github.com/john/repo.git fetch = +refs/heads/*:refs/remotes/origin/* |
| description | Описание репозитория (используется в GUI-инструментах) |
| hooks/ | Каталог для скриптов, выполняемых при определённых событиях Git (например, pre-commit, post-merge) |
| index | Индекс (staging area) — список файлов, подготовленных к включению в следующий коммит |
| info/ | Содержит служебную информацию, например, исключения для отображения в git log |
| logs/ | Журнал изменений ссылок (refs) и HEAD |
| objects/ | Хранение всех данных репозитория: коммитов, деревьев (trees), блобов (файлов) в сжатом виде по хешам SHA-1. Файлы размещаются в подкаталогах, имена которых соответствуют первым двум символам хеша, например: objects/ab/cdef1234567890... |
| refs/ | Каталог ссылок на коммиты: ветки (refs/heads/), теги (refs/tags/), удалённые ветки (refs/remotes/) |
Алиасы
Git позволяет создавать алиасы для команд — чтобы упростить и ускорить работу.
git config --global alias.<alias-name> "<command>"
Примеры:
# git st → git status
git config --global alias.st "status"
# git co → git checkout
git config --global alias.co "checkout"
# git br → git branch
git config --global alias.br "branch"
# git ci → git commit
git config --global alias.ci "commit"
# git lg → красивый вывод лога
git config --global alias.lg "log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"
# git amend → исправить последний коммит
git config --global alias.amend "commit --amend -C HEAD"
# git undo → отменить последний коммит
git config --global alias.undo "reset HEAD~1"
# git unstage → убрать файл из индекса
git config --global alias.unstage "reset HEAD --"
Алиасы хранятся в глобальном конфиге Git ~/.gitconfig или git config --global --edit.
Пример содержимого:
[alias]
st = status
co = checkout
br = branch
ci = commit
undo = reset HEAD~1
lg = log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit
Алиасы можно использовать для сложных сочетаний. Можно добавлять даже собственные shell-команды через !.
См. также
Другие статьи этого же раздела в боковом меню (как на странице «О разделе»). Для защиты кода используется автосохранение (в первую очередь), снимки состояний, локальные истории и конечно же самое важное – VCS (version control Система), система контроля версий. Защита кода от несанкционированных изменений — это комплекс мер, направленных на предотвращение копирования, модификации, подделки или обратной инженерии программного обеспечения. Такие меры особенно… После этого мы увидим общее состояние рабочей директории и индекса — Файлы, добавленные в индекс (зеленый цвет), Файлы, измененные но не добавленные в индекс (красный цвет), Новые файлы, не… GitFlow — это модель организации ветвления в системе контроля версий Git, предложенная Винсентом Дриессеном в 2010 году. Она не является встроенным режимом работы самого Git, но представляет собой… В современной практике git daemon используется редко ввиду отсутствия безопасности; предпочтение отдаётся SSH или HTTPS. git fetch используется для просмотра данных в репозитории. -v / --verbose – добавляет больше информации в вывод команды. Часто используется для отладки или получения более подробного лога. К примеру, git push -v – подробный вывод при отправке изменений. В некоторых случаях используется SVN (Apache Subversion), в отличие от Git, это централизованная система контроля версий, требующая установки сервера. Для защиты данных используется резервное копирование (backup, бэкап), это защищает от пропажи данных при сбоях, атаках или ошибках. GitVerse — это российская AI-first платформа для совместной разработки программного обеспечения и управления кодом. Платформа запущена компанией СберТех в марте 2024 года как ответ на возможные… SourceCraft — это облачная платформа для полного цикла разработки, тестирования, сборки и сопровождения программного обеспечения от компании Яндекс B2B Tech. SSH ключ — это пара криптографических файлов для подтверждения личности пользователя при подключении к серверу. Каждый сервис использует свою пару ключей при необходимости полного разделения доступа.Безопасность кода
Защита кода от изменений
Архитектура системы контроля версий Git
Модель ветвления GitFlow
Особенности работы с репозиториями в Git
Команды Git для повседневной разработки
Настройка и параметры Git
Сравнение Git и Subversion (SVN)
Методы защиты пользовательских и корпоративных данных
Gitverse - отечественная альтернатива Git
SourceCraft - отечественная альтернатива Git
Множественные сервисы Git на одном компьютере