Git
Распределённая система контроля версий: хранит полную историю изменений проекта локально и позволяет работать над кодом параллельно.
Что такое Git
Git (гит) — распределённая система контроля версий. Она сохраняет снимки состояния проекта (коммиты), позволяет вернуться к любому из них, вести параллельные ветки и сливать работу нескольких человек без затирания чужих правок.
«Распределённая» означает, что у каждого разработчика на диске лежит полная копия истории, а не только рабочие файлы. Отсюда практические следствия: git log, git diff и переключение веток работают мгновенно и без сети, а сервер нужен только чтобы обмениваться коммитами с командой.
Создан Линусом Торвальдсом в 2005 году для разработки ядра Linux. Сегодня — фактический стандарт: на Git работают GitHub, GitLab и Bitbucket.
Git и GitHub — не одно и то же
Частая путаница. Git — программа на вашем компьютере, git в терминале. GitHub — сайт, который хранит копию репозитория в интернете. Git прекрасно работает без всякого GitHub — хоть с репозиторием на своём VPS по SSH.
Три состояния файла
Ключевая модель, без которой Git кажется нелогичным:
рабочий каталог → staging (index) → репозиторий
(правки) git add git commit
- Working directory — файлы, которые вы редактируете.
- Staging area — «корзина» изменений, отобранных в следующий коммит. Именно она позволяет закоммитить две правки из пяти.
- Repository — папка
.gitс историей коммитов.
Базовый цикл
git init # создать репозиторий
git clone <url> # или склонировать существующий
git status # что изменено
git add file.py # отобрать в коммит
git add -p # отобрать по кускам, интерактивно
git commit -m "fix: таймаут" # зафиксировать
git push origin main # отправить на сервер
git pull # забрать чужие изменения
Подробный разбор pull, fetch, stash, revert — в отдельной статье про команды Git.
Ветки
Ветка в Git — просто подвижный указатель на коммит, поэтому создание ветки ничего не копирует и занимает миллисекунды. Это и сделало ветвление повседневной операцией.
git switch -c feature/auth # создать ветку и перейти
git switch main # вернуться
git merge feature/auth # влить ветку
git branch -d feature/auth # удалить влитую
Слить ветки можно через merge (сохраняет историю как есть) или rebase (переносит коммиты, делая историю линейной). Как договориться о ветках в команде — см. Git Flow.
Что такое Git Bash
Git Bash — терминал, который ставится вместе с Git for Windows. Это эмуляция Bash-окружения из Linux: вместе с git вы получаете ls, grep, ssh, curl, которых нет в стандартном cmd. Нужен он ровно потому, что почти вся документация и скрипты вокруг Git написаны под Unix-шелл. На Linux и macOS никакого Git Bash нет — там Git работает в обычном терминале.
Настройка после установки
git config --global user.name "Ivan Petrov"
git config --global user.email "ivan@example.com"
git config --global init.defaultBranch main
git config --global pull.rebase true # линейная история вместо merge-коммитов
ssh-keygen -t ed25519 -C "ivan@example.com" # ключ для доступа к серверу
cat ~/.ssh/id_ed25519.pub # добавить в GitHub/GitLab
Файл .gitignore в корне репозитория исключает из версионирования то, чему там не место: виртуальные окружения, node_modules, веса моделей, .env с паролями.
Git в инфраструктуре
Git давно вышел за пределы кода. В нём хранят манифесты Kubernetes, плейбуки Ansible и конфиги серверов — подход называется GitOps / IaC. Push в репозиторий запускает CI/CD-пайплайн, а история коммитов становится журналом изменений инфраструктуры: видно, кто и когда поменял лимиты памяти на проде.
Связанные термины
- Команды Git — что делают pull, fetch, stash, revert
- Git-репозиторий — хранилище истории проекта
- git rebase — перенос коммитов и линейная история
- Git Flow — модели ветвления в команде
- Системы контроля версий — класс инструментов, к которому относится Git
- GitHub — самый популярный хостинг Git-репозиториев
Готовы запустить GPU-задачу?
Запустить GPU-сервер