Короткий ответ
Git — это распределённая система контроля версий для отслеживания изменений исходного кода. В отличие от централизованных систем вроде SVN или CVS, каждый разработчик имеет полную копию репозитория со всей историей. Commit — это запись изменений с метаданными: автор, дата и ссылка на родительский коммит.
Как это работает подробнее
Каждый файл в репозитории в любой момент находится в одном из четырёх состояний, между которыми его перемещают команды Git.
- Untracked. Новый файл, ещё не добавленный в Git.
- Modified. Файл изменён после последнего коммита, но ещё не подготовлен.
- Staged. Файл добавлен командой
git addи готов к коммиту. - Committed. Изменения сохранены в репозиторий командой
git commit. - Целостность. Каждый коммит идентифицируется уникальным SHA-1-хэшем, а
git pushиgit pullсинхронизируют локальный репозиторий с удалённым.
Пример кода
Базовые команды Git
git status # показать состояние и незакоммиченные изменения
git add main.py # добавить файл в индекс (staged)
git commit -m 'Исправлен баг' # сохранить изменения с сообщением
git push # отправить коммиты в удалённый репозиторий
git pull # забрать изменения: это fetch и merge
git fetch # только скачать изменения без слиянияЧто использовать на практике
- Частые коммиты. Делай небольшие коммиты с осмысленными сообщениями, чтобы историю было легко читать.
- Проверка состояния. Регулярно смотри
git status, чтобы понимать, какие файлы изменены. - Синхронизация. Перед началом работы делай
git pull, после завершения —git push. - Конфликты. При одновременной правке одних строк возникает merge conflict: его разрешают вручную, затем снова делают
git addиgit commit.
Подводные камни
- Сообщения коммитов. Пустые или бессмысленные сообщения обесценивают историю проекта.
- git pull как merge. Новички не ожидают, что pull одновременно сливает изменения и может создать merge-коммит.
- Случайные файлы. Без
.gitignoreв коммиты попадают временные файлы и секреты. - Конфликтные маркеры. Незавершённый конфликт с маркерами в файле ломает сборку — доводи резолюцию до коммита.
Как отвечать на собеседовании
- Начни с определения Git как распределённой системы контроля версий → опиши четыре состояния файла → объясни, что такое коммит и его метаданные → перечисли базовые команды → упомяни конфликты и их разрешение.