↓Перейти к содержанию
  1. Git: руководства и команды/

Git в IntelliJ IDEA: цвета файлов, восклицательный знак и работа с VCS

·6 минут·

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 редактор:

  1. Правый клик на конфликтующий файл → Git → Resolve Conflicts
  2. Откроется окно со списком конфликтных файлов
  3. Двойной клик на файл → откроется Merge Tool с тремя панелями:
    • Левая панель: ваши изменения (local)
    • Правая панель: входящие изменения (incoming / theirs)
    • Центральная панель: результат (то, что получится)
  4. Кнопки >> и << переносят изменения в центр
  5. Можно редактировать центральную панель вручную
  6. Нажать 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/.