У меня есть старый проект, в котором я изменил много файлов (более ста). Удалил несколько, переименовал целую кучу, удалил много, эт c. В этой партии изменений, вероятно, стоит 10 или более коммитов. Как мне написать команду фиксации, чтобы выбрать, например, только те переименованные файлы:
git commit "all renamed files" -m "Renamed files."
Я хотел бы попытаться избежать чего-то подобного:
git commit file1 file2 file3 -m "Renamed files."
... потому что их слишком много. Я также могу зафиксировать папки стоимостью (git commit folder1 . . .
), но, к сожалению, в папках есть файлы, которые не нужно фиксировать.
Я принял предоставленный ответ, но мне пришлось изменить команду бит:
git status --porcelain | grep -E '^(.R|R.)' | \
cut -b4- | awk '{print $1}' | xargs git commit -m "Bulk renamed files."
Причина этого заключается в том, что, например, при запуске git status --porcelain | grep -E '^(.R|R.)' | cut -b4-
выводятся (для демонстрации всего одна строка): source/__init__.py -> site/__init__.py
. Когда я использую xargs
для запуска команды commit
, она не принимается, предположительно из-за части -> . . .
. Поэтому я использую awk
здесь, чтобы выбрать только первый блок, и это прекрасно работает. Спасибо!