- Андрей Куманяев/
- Git: руководства и команды/
- Git в IntelliJ IDEA: цвета файлов, восклицательный знак и работа с VCS/
Git в IntelliJ IDEA: цвета файлов, восклицательный знак и работа с VCS
Git в IntelliJ IDEA: что означают цвета и значки файлов #
IntelliJ IDEA (а также PyCharm, WebStorm, GoLand и другие IDE от JetBrains) имеет глубокую интеграцию с Git. Файлы в дереве проекта подсвечиваются разными цветами и значками в зависимости от их Git-состояния. Разберём что каждый цвет и значок означает — и что с этим делать.
Цвета файлов в дереве проекта #
Красный — untracked (новый файл, не добавлен в Git) #
src/
NewComponent.jsx ← красный
Файл существует в папке, но Git о нём не знает. Нужно сделать git add или добавить через IDE.
Что делать: правый клик на файл → Git → Add. Или при следующем коммите IDEA предложит добавить его автоматически.
Чтобы файл остался непрослеживаемым навсегда — добавьте его в .gitignore.
Зелёный — staged / новый отслеживаемый файл #
src/
NewComponent.jsx ← зелёный (после git add)
Файл добавлен через git add и готов к коммиту. Находится в staging area.
Синий — modified (изменён, но не закоммичен) #
src/
App.jsx ← синий
Файл уже отслеживается Git и был изменён с последнего коммита. Изменения ещё не закоммичены.
Серый — ignored (в .gitignore) #
build/
output.js ← серый
node_modules/ ← серая папка
Файл или папка игнорируется по правилам .gitignore. Git их не видит и не отслеживает.
Чёрный / обычный — без изменений #
Файл закоммичен и не изменялся. В этом состоянии файлы не имеют особой подсветки.
Белый / жёлтый — в зависимости от темы #
В тёмной теме (Darcula) статус-цвета немного отличаются, но логика та же.
Восклицательный знак (!) на файле — что это #
Восклицательный знак ! или жёлтый ромб рядом с файлом в дереве проекта IntelliJ IDEA означает конфликт при слиянии (merge conflict). Файл имеет конфликтующие изменения, которые Git не смог разрешить автоматически.
src/
App.jsx ← ! (конфликт)
Это происходит после:
git mergeс конфликтамиgit rebaseс конфликтамиgit pullкогда удалённые изменения конфликтуют с локальными- Cherry-pick с конфликтом
Как разрешить конфликт в IntelliJ IDEA #
IDEA предоставляет удобный трёхпанельный merge редактор:
- Правый клик на конфликтующий файл → Git → Resolve Conflicts
- Откроется окно со списком конфликтных файлов
- Двойной клик на файл → откроется Merge Tool с тремя панелями:
- Левая панель: ваши изменения (local)
- Правая панель: входящие изменения (incoming / theirs)
- Центральная панель: результат (то, что получится)
- Кнопки
>>и<<переносят изменения в центр - Можно редактировать центральную панель вручную
- Нажать Apply после разрешения всех конфликтов
# Эквивалент в терминале:
git status
# both modified: src/App.jsx
# После ручного разрешения в IDEA:
git add src/App.jsx
git commit
После разрешения конфликта восклицательный знак исчезнет, файл станет зелёным (staged) или синим (modified).
Панель Git (Alt+9 / Cmd+9) #
Основной инструмент для работы с Git в IDEA — панель Git (нижняя панель, вкладка Git). Открыть: Alt+9 (Windows/Linux) или Cmd+9 (macOS), или View → Tool Windows → Git.
Здесь находятся:
- Log — граф коммитов (история веток, авторы, теги)
- Console — вывод git команд
- Branches — переключение веток
Просмотр истории файла #
Правый клик на файл → Git → Show History — покажет все коммиты, которые затронули этот файл, с возможностью посмотреть diff для каждого.
Основные Git операции через интерфейс IDEA #
Commit (VCS → Commit или Ctrl+K) #
Ctrl+K (Windows/Linux)
Cmd+K (macOS)
Откроется окно коммита:
- Слева: список изменённых файлов с чекбоксами (выбрать что включить)
- Справа: diff выбранного файла
- Внизу: поле для сообщения коммита
- Кнопка Commit или Commit and Push
Особенности:
- Можно делать stage отдельных строк прямо в окне коммита (выделить строки → правый клик → Move to Another Changelist)
- Запускает Code Analysis и Git Hooks перед коммитом
Push (Ctrl+Shift+K) #
Ctrl+Shift+K (Windows/Linux)
Cmd+Shift+K (macOS)
Покажет список коммитов которые будут отправлены, с diff каждого. Кнопка Push.
Pull (VCS → Git → Pull) #
Открывает диалог с выбором стратегии: merge или rebase. По умолчанию — merge.
Fetch #
VCS → Git → Fetch — получить информацию об удалённых ветках без слияния.
Создать ветку #
Git: Branches (нижняя панель) → + New Branch
или
Ctrl+Shift+` (открыть список веток)
Или прямо из логов: правый клик на коммит → New Branch.
Переключить ветку #
Нижний правый угол → имя текущей ветки → выбрать другую. Или `Ctrl+Shift+`` → выбрать ветку → Checkout.
Окно Changes (Local Changes) #
В панели Commit (Ctrl+K) или Local Changes видны все текущие изменения. Структура:
Changes
├── Default Changelist
│ ├── Modified: src/App.jsx (синий)
│ └── New: src/NewFile.jsx (зелёный)
└── Unversioned Files
└── src/ignored-during-add.js (красный)
Changelists — это способ IDEA группировать изменения (аналог staging, но более гибкий). Можно создавать несколько changelist-ов для разных задач.
Просмотр diff в IDEA #
Быстрый diff для текущего файла:
Ctrl+D — показать diff с последним коммитом
Или нажать на синюю полосу сбоку в редакторе (где отмечены изменённые строки) → появится inline diff.
В нижней панели Git → Log → выбрать коммит → видны все изменения коммита с полным diff.
Inline аннотации (Git Blame) #
Правый клик в редакторе → Git → Annotate with Git Blame. Каждая строка кода будет показана с информацией: кто и когда её написал.
abc1234 John Doe 3 days ago | const App = () => {
def5678 Jane Doe 1 week ago | return <div>Hello</div>
Наведите на аннотацию — появится полное сообщение коммита.
Значок замка / щита на файлах #
Если рядом с файлом иконка замка — файл является read-only на уровне файловой системы (не связано с Git напрямую). Это бывает с файлами вне области Git контроля или с проблемами прав доступа.
Индикатор в статусбаре IDEA #
В нижнем правом углу IDEA постоянно видно:
- Имя текущей ветки (кликабельно — переключение веток)
- Стрелки
↑3 ↓1— количество коммитов впереди / позади удалённой ветки
main ↑2 ↓0 — у вас 2 локальных коммита, не запушенных
main ↑0 ↓3 — на сервере 3 новых коммита, не спуленных
Настройка Git в IDEA #
File → Settings → Version Control → Git (Windows/Linux) IntelliJ IDEA → Settings → Version Control → Git (macOS)
Здесь настраивается:
- Путь к исполняемому файлу Git (
git.exeили/usr/bin/git) - SSH executable (встроенный в IDEA или системный)
- Автоматический fetch при открытии проекта
- Политика push (rebase/merge)
Если IDEA не видит Git:
Настройки → Version Control → Git → Path to Git executable
Нажать "Test" — проверит что Git найден
FAQ #
Почему горит восклицательный знак на папке, а не на файле?
IDEA показывает значок конфликта на всех родительских папках конфликтного файла. Раскройте папку — увидите конкретный файл с !. Нужно разрешить конфликт именно в этом файле.
Как понять что файл конфликтный, а не просто изменённый? Синий = изменён без конфликта. Восклицательный знак (или красный ромб) = конфликт. В панели Commit конфликтные файлы отображаются отдельно с пометкой «Merge conflict».
IDEA предлагает добавить файл в .gitignore — это нормально? Да. Когда новый файл появляется в проекте, IDEA спрашивает: добавить в Git или в .gitignore. Если файл не должен попасть в репозиторий (build артефакты, локальные конфиги) — выбирайте .gitignore.
Почему после git pull в терминале IDEA не обновляет цвета файлов?
IDEA синхронизирует статус при: фокусе на окне IDEA, явном нажатии «Synchronize» (правый клик на папке → Synchronize), или автоматически каждые несколько секунд. Нажмите Ctrl+Alt+Y (File → Synchronize) для принудительного обновления.
Как сделать interactive rebase в IDEA?
Git → Log → выделить коммиты → правый клик → Rebase Interactively. Откроется графический редактор rebase (аналог git rebase -i). Можно менять порядок, squash, reword коммиты без терминала.
Как отменить последний коммит в IDEA? Git → Log → правый клик на последний коммит → Undo Commit. IDEA предложит reset –soft или –mixed (изменения останутся) или –hard (изменения удалятся).
Итог #
Цветовая схема Git в IntelliJ IDEA: красный = новый неотслеживаемый файл, синий = изменён, зелёный = добавлен в staging, серый = игнорируется. Восклицательный знак ! означает конфликт при слиянии — разрешите его через правый клик → Git → Resolve Conflicts, используя встроенный трёхпанельный merge editor.
Основные горячие клавиши: Ctrl+K — commit, Ctrl+Shift+K — push, Alt+9 — открыть Git панель, `Ctrl+Shift+`` — переключить ветку.
Подробнее о работе с VS Code и Git: /ru/git/git-vscode/. Про GitHub Desktop для тех кто предпочитает GUI без IDE: /ru/git/github-desktop/.