Автоматизировать git фиксацию нескольких файлов - PullRequest
0 голосов
/ 09 июля 2020

У меня есть набор файлов, которые я хочу автоматически добавить и зафиксировать в git с помощью пакетного сценария. Добавление - не большая проблема, так как я могу добавить их все по отдельности. Но я не хочу фиксировать их по отдельности, потому что это объединяет репозиторий git с коммитами.

Один из способов:

git commit -a -m ...

, который фиксирует все. Но это также не очень практично, поскольку я бы зафиксировал другие файлы, которые я не обязательно хочу фиксировать.

Файлы, которые я хочу зафиксировать, находятся по:

dir <some_path> /b /s /A-D /o:gn

Есть ли способ поместить этот список файлов в команду git commit?

Полный сценарий:

>  FOR /F "delims=" %%a in ('dir <some_path> /b /s /A-D /o:gn') do CALL git add %%a -f

> git commit (Some list of files) -m <Some message>

Очевидный способ - просто заменить (Some list of files) с ('dir <some_path> /b /s /A-D /o:gn'), но это приводит к ошибке: fatal: /b: '/b' is outside repository

Как я могу достичь того, что хочу?

Спасибо,

Том

Ответы [ 2 ]

2 голосов
/ 09 июля 2020

git commit обычно фиксирует все файлы в индексе (то есть все файлы, которые вы ранее добавили в список изменений для следующей фиксации с помощью git add).

Поэтому вы делаете не необходимо указывать имена файлов после git commit.

Если вы боитесь, что другие файлы уже есть в индексе до того, как вы запустите git add, вы можете запустить git reset -- . в самом начале вашего script.

Это отменит все предыдущие git add команды, которые еще не были зафиксированы, и убедитесь, что вы запускаете свои собственные git add с чистым индексом.

PS: Ни одна из этих команд изменит любые файлы, они просто изменятся независимо от того, считаются ли они для фиксации.

0 голосов
/ 09 июля 2020

Как и другие, меня немного смущает ваша терминология:

есть действие git add, которое добавляет к индексу и «ждет», пока вы не наберете git commit

Скрипт будет просто:

git add file1
git add file2
...
git add fileN
# no need to pass a list of files there :
git commit -m ...

Это то, что вы ищете?

...