включать в git только конкретно перечисленные файлы

#git #wildcard #ignore

#git #подстановочный знак #игнорировать

Вопрос:

Я учусь использовать git для управления проектом на Python.

До сих пор я добавлял файлы явно с помощью «git add», но, похоже, в целом это способ включить все файлы с помощью «git add» . за исключением некоторых файлов, упомянутых в .gitignore

По крайней мере, «статус git» будет означать для меня, что есть куча файлов, о которых я, вероятно, должен что-то сказать.

Я подумываю о том, чтобы просто поместить:

 *
**
  

в .gitignore, а затем продолжая, как я уже делал, явно включать файлы. Хотя, похоже, это противоречит сути того, как предполагается использовать Git.

Мой вопрос таков: плохая ли идея работать таким образом, и если да, то почему?

Большое спасибо

Комментарии:

1. Много людей из нас git add . или похожих. Я считаю, что это анти-паттерн. Чего вы надеетесь добиться, вставив * и ** в .gitignore , если собираетесь продолжать вносить изменения вручную?

2. Привет, Крис, я с удовольствием добавлю файлы вручную. Именно так я предпочитаю действовать. Похоже, что предполагается учитывать все файлы в каталоге, либо добавляя их, либо исключая.

3. Я не думаю, что это точно так, но, безусловно, многие файлы следует отслеживать или явно игнорировать. Можете ли вы привести несколько примеров файлов, которые не отслеживались бы и не игнорировались бы в вашем типичном рабочем процессе?

Ответ №1:

Мой вопрос таков: плохая ли идея работать таким образом, и если да, то почему?

Да, это плохая идея. Цель .gitignore — указать файлы, которые вы собираетесь полностью исключить из системы управления версиями.

Если ваша проблема в том, что вам не нравится вводить имена всех файлов по отдельности, то есть несколько вариантов:

  1. Если у вас много файлов в одном каталоге, то вы можете просто ввести git add your-directory/ , и все измененные файлы в этом каталоге будут загружены.

  2. Если есть только несколько файлов, которые вы хотите исключить (до последующей фиксации), то вы можете воспользоваться подсказкой в # 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
  

Как только статус станет удовлетворительным, я обязуюсь.