Как правильно коммитить файлы, целый каталог, чтобы не коммитились все за раз
К примеру я сделал git add . после чего все файлы добавились, и как мне теперь сделать коммиты для определенных файлов? Я хочу, чтобы были коммиты только для определенный файлов, а для остальных коммит но пустой. Так получилось, что я запушил все файлы одним коммитом. И теперь все файлы под коммитом "Fix slide-menu".
Ответы (1 шт):
чтобы не повторяться о том, что же такое индекс:
- Зачем нужна staging area (index) в GIT?
- Git index предназначение
- Что значит индексация в контексте Git?
теперь собственно вопрос:
как правильно коммитить файлы …, чтобы не коммитились все за раз?
команда commit (без опции -a, конечно) формирует коммит из содержимого индекса (staging area). а в индекс файлы (новые либо изменённые) добавляются при помощи команды add.
отсюда логически следует:
- что добавили в индекс, то в коммит и попадёт.
- чтобы в коммит не попало «всё подряд», надо и добавлять выборочно.
можно указать конкретный файл, или целый каталог (добавлен будет, естественно, не каталог, а содержащиеся в нём файлы, рекурсивно). отдельными командами add или целой пачкой. примеры:
$ git add файл
$ git add путь/к/файлу
$ git add каталог/с/файлами
$ git add файл1 путь/к/файлу2 каталог/с/файлами ...
не бойтесь продублировать команды — файл добавится только один раз, сколько бы раз вы его не упомянули в командах add.
можно использовать шаблоны оболочки: * — вместо любого количества символов, ? — вместо одного символа. текущий каталог, как обычно, можно указать точкой: .
посмотреть, какие файлы добавлены в индекс, можно, например, командой status:
$ git status
правда, эта команда показывает и другую информацию (бывает, много), и чтобы видеть только добавленные в индекс файлы, можно использовать:
$ git diff --name-only --cached
убрать файл из индекса можно командой rm с опцией --cached. указать можно и один файл, и много файлов. можно указать и каталог, чтобы исключить файлы рекурсивно. тогда надо будет добавить ещё и опцию -r:
$ git rm --cached файл
$ git rm --cached путь/к/файлу
$ git rm --cached -r каталог/с/файлами
$ git rm --cached -r файл1 путь/к/файлу2 каталог/с/файлами ...
как и в случае с командой add, можно использовать шаблоны оболочки.