#git #wildcard #ignore
#git #подстановочный знак #игнорировать
Вопрос:
Я учусь использовать git для управления проектом на Python.
До сих пор я добавлял файлы явно с помощью «git add», но, похоже, в целом это способ включить все файлы с помощью «git add» . за исключением некоторых файлов, упомянутых в .gitignore
По крайней мере, «статус git» будет означать для меня, что есть куча файлов, о которых я, вероятно, должен что-то сказать.
Я подумываю о том, чтобы просто поместить:
*
**
в .gitignore, а затем продолжая, как я уже делал, явно включать файлы. Хотя, похоже, это противоречит сути того, как предполагается использовать Git.
Мой вопрос таков: плохая ли идея работать таким образом, и если да, то почему?
Большое спасибо
Комментарии:
1. Много людей из нас
git add .
или похожих. Я считаю, что это анти-паттерн. Чего вы надеетесь добиться, вставив*
и**
в.gitignore
, если собираетесь продолжать вносить изменения вручную?2. Привет, Крис, я с удовольствием добавлю файлы вручную. Именно так я предпочитаю действовать. Похоже, что предполагается учитывать все файлы в каталоге, либо добавляя их, либо исключая.
3. Я не думаю, что это точно так, но, безусловно, многие файлы следует отслеживать или явно игнорировать. Можете ли вы привести несколько примеров файлов, которые не отслеживались бы и не игнорировались бы в вашем типичном рабочем процессе?
Ответ №1:
Мой вопрос таков: плохая ли идея работать таким образом, и если да, то почему?
Да, это плохая идея. Цель .gitignore
— указать файлы, которые вы собираетесь полностью исключить из системы управления версиями.
Если ваша проблема в том, что вам не нравится вводить имена всех файлов по отдельности, то есть несколько вариантов:
-
Если у вас много файлов в одном каталоге, то вы можете просто ввести
git add your-directory/
, и все измененные файлы в этом каталоге будут загружены. -
Если есть только несколько файлов, которые вы хотите исключить (до последующей фиксации), то вы можете воспользоваться подсказкой в # 1 или просто запустить
git add .
, затем вручную исключить каждый файл, который вы не хотите использовать для фиксацииgit reset HEAD file-to-exclude
, что приведет к отмене создания файла.
В общем, однако, вы не хотите оставлять множество файлов измененными, но не измененными одновременно. Это приведет к головной боли и затруднит использование возможностей контроля версий. Попробуйте фиксировать небольшие, логически связанные обновления по одному за раз, затем переходите к другой части вашего проекта.
Ответ №2:
но, похоже, в целом это способ включать все файлы с помощью «
git add .
«, за исключением некоторых файлов, упомянутых в.gitignore
То, что я обычно делаю при наборе текста git add .
, — это следовать с помощью git status
.
Если я вижу, что добавлено слишком много файлов (потому что мой .gitignore
был недостаточно точным), я сбрасываю, изменяю .gitignore
, добавляю снова и снова управляю статусом git.
git reset
# edit .gitgignore
git add .
git status
Как только статус станет удовлетворительным, я обязуюсь.