В чем разница между git add * и git add ., Если есть?

У мерзких животных была такая серия команд:

git init
git add *
git commit -a -m ‘initial commit and release!’

Что значит git add * сделать по сравнению с git add . (что я обычно делаю) они одинаковы?

2 ответа

Решение

git add * добавит все пути, которые являются результатом расширения оболочки * в то время как git add . скажет git добавить текущий каталог.

git add * не будет добавлять пути, которые начинаются с . как расширение оболочки * считает, что это "скрытые" пути.

git add * также потерпит неудачу, если git игнорирует любой расширенный путь, потому что git считает это ошибкой, если вы явно указываете игнорируемый путь без передачи -f (принудительно) флаг, чтобы показать, что вы действительно хотите добавить игнорируемый путь.

Если вы получили мерзавец, чтобы расширить шар (git add '*') он добавит "скрытые" файлы и пропустит пропущенные файлы. Это будет работать так же, как git add . в этом случае.

По умолчанию передача каталога в git add будет рекурсивно добавлять свои подкаталоги и файлы.

Подстановочный знак * будет расширен вашей оболочкой как имена файлов ниже текущего каталога.

И вы знаете, в Unix . относится только к текущему каталогу, поэтому эти две команды эквивалентны. Хоть * обрабатывается оболочкой и . обрабатывается Git, они делают то же самое.

Другие вопросы по тегам