2014-01-07 2 views
1

Я ищу команду Bash (или последовательность команд), которая печатает сводку того, какие файлы были изменены в рабочей копии Git. В сводке должно быть указано количество вставок и удалений в каждом файле и, возможно, они будут поставлены.Как получить резюме, подобное git add --interactive?

Команда git add --interactive (которая является синонимом git add -i) дает точное резюме, которое я хочу (плюс другие материалы). Проблема в том, что он не просто печатает и выходит, он запускает целую оболочку, отличную от Bash. Вот часть git add -i, что мне нравится:

bash$ git add -i 
     staged  unstaged path 
1: unchanged  +3/-0 trunk/src/analyzer.c 
2: unchanged  +5/-13 trunk/src/converter.c 

Это большое резюме. К сожалению, после его распечатки вы не вернулись в Bash. Чтобы вернуться к Bash, вам нужно ввести q и затем ввести, чтобы выйти. Я действительно хочу, чтобы он просто распечатывал сводку, а затем останавливался.

Вот что я пробовал:

  1. Введите следующие команды в терминале Bash: git add -i; q. Это не работает, вам все равно нужно нажать q вручную, а затем он выдает ошибку из-за второго q.

  2. Поместите следующее в сценарий gitsummary.sh, а затем запустите его: git add -i, с или без ; q в конце. Та же проблема.

Как я могу получить это резюме полностью не интерактивным способом? Я могу думать о двух возможных решений:

  1. Используйте Bash трюк, который ждет долю секунды, а затем имитирует нажатие клавиши.

  2. Используйте другую команду Git, которая печатает ту же информацию, но не запускает странную маленькую оболочку.

Моя основная настройка: Mac OS X 10.9 и Terminal (running/bin/bash).

Моя вторичная установка: Windows 7 или 8 и Cygwin работает Bash.

ответ

1

Любой из них должен дать вам то, что вы хотите:

git diff --numstat 
git diff --stat 
+0

Задача 1: Обе эти команды полностью Опустить поставил файлы, и я действительно хочу, чтобы увидеть постановочные файлы тоже. Проблема 2. Обе эти команды не упоминают '??' файлы (я говорю о файлах, которые еще не отслеживаются, но также не игнорируются, т. Е. Новые файлы). Однако, спасибо за предложения. – SerMetAla

+0

Это _closer_ к тому, что я хочу, но все же не то, что я хочу: 'git diff --numstat HEAD'. Мне не нравится 'git diff --stat HEAD', потому что он не перечисляет вставки и удаления отдельно, он, кажется, их объединяет, а затем показывает относительные пропорции знаков плюс и минус. – SerMetAla

+0

@SerMetAla: Что бы вставляли/удаляли даже для невоспроизводимых файлов? Если вы действительно хотите их там, напишите сценарий, который объединяет вывод 'git diff' с чем-то, что подсчитывает количество строк в файлах без следа (используя' git ls-files -o', чтобы найти их). –

Смежные вопросы