2010-04-20 2 views
4

Есть ли способ иметь git status игнорировать некоторые изменения внутри файла?git status: как игнорировать некоторые изменения

фон

У меня есть несколько файлов в моем хранилище, которые автоматически генерируются (да, я знаю, что это обычно не рекомендуется, но у меня нет сил, чтобы изменить это). Всякий раз, когда я строю свое дерево, эти автоматически сгенерированные файлы содержат обновленную информацию о статусе (кто их создал, временную метку и т. Д.).

Когда я говорю git status, я бы хотел, чтобы он запускал фильтр для этих сгенерированных файлов, который удаляет эту информацию о состоянии переходного процесса. Я хочу, чтобы он отображался в разделе "Changed but not updated:" выхода git, если есть другие реальные изменения.

Используя .gitattributes подход нашел в https://git-scm.com/book/en/v2/Customizing-Git-Git-Attributes, я могу получить git diff игнорировать эти строки состояния изменения, используя простой egrep фильтр. Я хотел бы получить git status, чтобы использовать фильтры textconv (или что-то подобное).

Я бы предпочел, чтобы ни одна из этих фильтров не влияла на слияния.

ответ

0

Я думал доложить о двух обходных путях, которые я использую: информацию о состоянии

  • Удалить из автоматически сгенерированных файлов.
  • У вас есть сценарий обновления, который выполняет git checkout origin ... как часть сборки для любых сгенерированных файлов, не имеющих семантических изменений.
1

Вы также можете использовать фильтры, чтобы скрыть свои изменения от git. Укажите «чистый» фильтр, который «очистит» ненужные изменения (подайте Git версию файла на Git), поэтому он не увидит изменения (но он все равно может отобразить файл в «состоянии git»).

Детали: Better way of making Git to turn a blind eye on my changes

Смотри также другие ответы на этот вопрос, они также об игнорировании изменений.

1

Простым решение, запустите следующую команду на файл или путь, который вы хотите игнорировать изменения:

git update-index --assume-unchanged <file> 

Если вы хотите начать отслеживать изменения снова запустите следующую команду:

git update-index --no-assume-unchanged <file> 

Вам не придется забывать, чтобы начать отслеживание снова, когда есть изменение, которое вы хотите совершить.

+0

Спасибо за предложение; к сожалению, я не хочу полностью игнорировать файлы. Я просто хочу игнорировать некоторые типы изменений в файлах. –

Смежные вопросы