Как исключить некоторые каталоги из вывода статуса git без необходимости изменять рабочее дерево (например, _not_ не изменяет .gitignore) - PullRequest
1 голос
/ 20 апреля 2020

В моем рабочем дереве есть каталог с несколькими измененными файлами, которые я временно хотел бы , а не , когда я делаю git status. Но в идеале это должно быть сделано без изменения «состояния» моего рабочего дерева. Как я могу это сделать?

Я посмотрел на man git-status, но не увидел опции, позволяющей исключить указанную директорию c.

Некоторые обходные пути:

  • Используйте git status | grep -v dir-to-exclude, но тогда я потеряю красивые цвета.
  • Укажите все остальные каталоги и файлы в качестве аргументов для статуса git, то есть git status dir-1 dir-2 dir-3 file-1 file-2
  • Используйте git stash временно хранить изменения в dir-to-exclude/, но это изменяет мое состояние
  • Временно добавить dir-to-exclude/ к .gitignore, но это изменяет состояние моего рабочего дерева, и я не забываю отменить изменение. Он также не работает для измененных файлов с контролем версий.
  • Используйте какую-либо другую команду, кроме git status, если она существует ???

Если нет готовый вариант для git status, тогда каким-то образом я могу использовать grep без потери красивых цветов.

Ответы [ 2 ]

1 голос
/ 20 апреля 2020

Попробуйте это

 git -c color.ui=always status | grep -v <dir-to-exclude>

См. Цвета в Git разделе здесь

Git полностью поддерживает цветной терминал output, что значительно облегчает визуальный анализ вывода команды быстро и легко. Ряд опций может помочь вам установить раскраску по вашему усмотрению.

color.ui

Git автоматически окрашивает большую часть его вывода, но есть главный переключатель если вам не нравится это поведение.

Вы также можете установить его всегда, чтобы игнорировать разницу между клеммами и трубами.

0 голосов
/ 20 апреля 2020

Это может быть подходящим использованием для git update-index --skip-worktree. Цитируя документацию ,

Бит Skip-worktree можно определить в одном (длинном) предложении: если при чтении записи она помечается как skip-worktree, то Git делает вид, что версия его рабочего каталога актуальна, и вместо этого читает индексную версию.

Другими словами, если вы установите этот флаг для файла с git update-index --skip-worktree <filename>, то Git будет игнорируйте фактическое содержимое и метаданные файла на диске и просто сделайте вид, что он не изменен. Это относится только к операциям read ; если вы запустите операцию Git, которая запишет в файл (например, git checkout или git reset), то Git выдаст вам предупреждение.

Лично у меня есть эта команда с псевдонимом git ignore, а противоположная версия git update-index --no-skip-worktree с псевдонимом git unignore. Конечно, если вы собираетесь это сделать, вы должны помнить, что это совершенно не связано с механизмом, который использует файлы .gitignore, поэтому вы можете выбрать другое имя, если есть вероятность путаницы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...