Как в Git проверить, какие файлы добавлены в индекс (staged)?

«Как в Git проверить, какие файлы добавлены в индекс (staged)?» — вопрос из категории DevOps, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Файлы, добавленные в индекс (staging area), готовы к фиксации в следующем коммите. Проверить их можно несколькими командами:

1. Основная команда git status:

git status

Вывод будет содержать раздел "Changes to be committed", в котором перечислены staged-файлы.

On branch main
Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
        modified:   src/Main.java
        new file:   src/utils/Helper.java

Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
        modified:   README.md

2. Просмотр изменений в staged-файлах:

# Показать diff (разницу) для всех файлов в индексе
git diff --staged
# или
git diff --cached

# Показать diff для конкретного staged-файла
git diff --staged src/Main.java

3. Использование низкоуровневых команд (для скриптов):

# Список staged-файлов в machine-readable формате
git diff --staged --name-only
# src/Main.java
# src/utils/Helper.java

В программировании (например, с использованием JGit):

// Пример на JGit: добавление файла в индекс
try (Git git = Git.open(new File("/path/to/repo"))) {
    // Добавить файл в индекс (stage)
    git.add().addFilepattern("src/Main.java").call();
    // Получить статус
    Status status = git.status().call();
    // Получить список staged-файлов
    Set<String> stagedFiles = status.getAdded(); // Новые файлы
    stagedFiles.addAll(status.getChanged()); // Изменённые файлы
    System.out.println("Staged files: " + stagedFiles);
}

Важно: git add перемещает изменения из рабочей директории в индекс. git commit фиксирует состояние индекса.