У меня есть привязка Git pre-commit, которая разделяет пробелы и оставляет измененные файлы в рабочей копии, так что она не топает на частичном добавлении, например git add -p
,Показать файлы, которые находятся в индексе Git и изменены в рабочей копии
Если я исправляю один файл из многих измененных, а пробелы исправлены, то у меня есть два файла, измененные в рабочей копии и один поэтапный файл (который также находится в рабочей копии, но поэтапное изменение имеет ошибки пробела) :
vi fileWithBadWS.txt # leave bad whitespace
vi fileWithGoodWS.txt # don't leave bad whitespace
vi unrelatedFile.txt
git add fileWithBadWS.txt fileWithGoodWS.txt
git commit -m "Commited files, one with bad whitespace" # pre-commit hook fails
РЭПО теперь выглядит следующим образом:
On branch master
Changes to be committed:
modified: fileWithBadWS.txt # bad WS
modified: fileWithGoodWS.txt
Changes not staged for commit:
modified: fileWithBadWS.txt # fixed WS
modified: unrelatedFile.txt
можно использовать:
git diff
см.fileWithBadWS.txt
иunrelatedFile.txt
git diff --cached
посмотреть поставленные файлыfileWithBadWS.txt
иfileWithGoodWS
.
Как я могу видеть только файлы, которые, как измененные в рабочей копии и постановке (т.е. просто fileWithBadWS.txt
)?
Примечание: этот вопрос использует пример использования пробелов и предварительных фиксаций в качестве примера, но применим в общем случае к любой ситуации, когда у вас есть несколько файлов, а некоторые нет, с некоторым перекрытием.
Для необычных имен файлов 'мерзавец дифф --name только --staged -z | xargs -0 git diff -name-only' будет лучше. – Roman
Good catch @Roman :) –