Как я могу перечислить только файлы, которые будут переданы?
Есть ли способ получить список файлов, которые будут зафиксированы при вводе следующего?
git commit -m "my changes"
git списки состояний слишком много. Я мог бы вычеркнуть все слова, но я бы предпочел. И я не хочу, чтобы мне рассказывали о невоспроизводимых файлах.
Я пробовал
git ls-files -md
но это не показывает файлы, которые были недавно добавлены, но еще не выполнены.
Я ищу тот же результат, который вы получили от
svn status -q
Например
$ svn status -q
Файл file.py
M dir/database.py
M start.py
Ответы
Ответ 1
Это то, что я искал. Спасибо notnoop за лидерство, в котором я нуждался. Я хотел бы опубликовать свое решение, если оно помогает другим.
git diff HEAD --name-only
Поскольку я намеревался сделать
git commit -s -F mesage.txt
с файлами, найденными в первой строке.
Я намерен создать небольшую систему, полностью игнорирующую индекс, т.е. мне никогда не нужно делать git add. (Насколько я понимаю, индекс полезен при создании патчей, что отнюдь не является нормой в моем рабочем процессе.)
Ответ 2
Эта команда сообщит вам, какие файлы в вашем индексе/кеше/промежуточной области отличаются от текущего HEAD (и являются ли они дополнениями, изменениями или удалениями), которые являются изменениями, которые будут совершены, если вы используете git commit
без явного путей или опции -a
. Этот формат достаточно похож на вывод svn status
, который вы показываете.
git diff --cached --name-status
Ответ 3
Вы можете попробовать:
git diff --name-status
Я получаю следующее:
$ git diff --name-status
M README.markdown
Без файлов без следа.
Ответ 4
Я знаю, что оригинал OP попросил избежать git status
, но я чувствовал, что было бы неплохо уйти на потомство (то есть другие люди, которые не разделяют оговорки OP).
git status --porcelain | grep -v '^[ |??]' | sed -e 's/[A-Z] *//'
Мое рассуждение состоит в том, что git status --porcelain
кажется, что он был построен именно для этого типа затруднений...
источник: http://git-scm.com/docs/git-status.html
EDIT:
Вы можете не использовать sed -e 's/[A-Z] *//'
, если хотите сохранить теги модификации git перед каждым именем файла.