*
является баш-глобусом. Он расширится на все файлы в каталоге, в котором вы находитесь, за исключением точечных файлов (файлов, начинающихся с точки (.
)).
.
означает текущий каталог.
Результат может сильно различаться в зависимости от содержимого вашего каталога и наличия .gitignore
файл.
Предположим, что в вашем каталоге есть следующие файлы и каталоги:
.dotfile-который-должен-быть-зафиксирован
.git/
.gitignore
какой-то-файл-находится-в-gitignore
какой-то другой файл
Когда вы бежите git добавить *
, глобус расширяется до запуска команды git. Итак, команда git получает следующее:
git добавить какой-то файл, который находится в git, игнорировать какой-то другой файл
Это вызывает четыре проблемы здесь.
- Git будет жаловаться, что
какой-то-файл-находится-в-gitignore
не может быть добавлен и попросит вас добавить силу (-f
) аргумент, если вы действительно хотите его добавить.
- обе
.dotfile-который-должен-быть-зафиксирован
и .gitignore
не были добавлены как *
не расширяется до dotfiles.
- Если вы удалили файлы в каталоге, в котором находитесь,
*
никогда не может расширяться до них, поэтому удаленные файлы не будут помещены в промежуточные файлы.
- Если вы переименовали файлы в каталоге, в котором находитесь,
*
никогда не может расшириться до старого имени, но он расширится до нового. Итак, git увидит, что вы добавили новый файл, и, поскольку старое имя не было подготовлено, вы получите один и тот же файл, существующий дважды, со старым именем и новым именем.
Тем не менее, бег git добавить .
говорит git добавить текущий каталог, в котором вы находитесь, не указывая, какой файл добавить. В этом случае git проверит .gitignore
файл и рекурсивно добавить все файлы, не упомянутые в .gitignore
.
В итоге:
- Вы должны использовать
git добавить .
нет git добавить *
.
Даже лучше:
- Использовать
git добавить полный/файл/пути
так что вы не добавляете по ошибке материал, который не готов к добавлению.
И даже намного лучше:
- Использовать
git добавить -p
чтобы просмотреть ваши изменения и выбрать, какие исправления вы хотите добавить.