* является баш-глобусом. Он расширится на все файлы в каталоге, в котором вы находитесь, за исключением точечных файлов (файлов, начинающихся с точки (.)).
. означает текущий каталог.
Результат может сильно различаться в зависимости от содержимого вашего каталога и наличия .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 чтобы просмотреть ваши изменения и выбрать, какие исправления вы хотите добавить.