Есть ли способ gitignore конкретного слова? - PullRequest
0 голосов
/ 31 мая 2019

Я хочу, чтобы мой git игнорировал маркер vim-foldmark ({{{,}}}), который я добавил в репо. Я знаю, что у git есть опция --ignore-whitespace, но Есть ли способ сказать Git игнорировать определенное слово или строки? Конечно, я хочу, чтобы git отслеживал различия, которые не являются "{{{" или "}}}"

, если клонирован исходный код

def foo(bar):
    # do someting
    return "buz"

и я редактирую как

def foo(bar): # {{{ <- this tells vim to fold from here
    # do something
    return "baz" # }}} to here

Я хочу, чтобы git diff был таким

-    # do someting
+    # do something
-    return "buz"
*    return "baz"

не так

-def foo(bar):
+def foo(bar): # {{{ <- this tells vim to fold from here
-    return "buz"
*    return "baz" # }}} to here

1 Ответ

1 голос
/ 01 июня 2019

Git не позволяет использовать файл .gitignore для игнорирования части файла.Вы можете либо игнорировать все это, либо не игнорировать это вообще.

Однако, есть способ сделать то, что вы хотите, - это фильтр diff.Если вы редактируете файл .git/info/attributes (создаете его, если он не существует), вы можете ввести строку с надписью *.py diff=vim, которая заставит все файлы Python использовать фильтр сравнения "vim".Вы также можете написать это в .gitattributes, если вы единственный человек в проекте, или в любом другом действительном файле gitattributes (подробности см. На странице руководства).

Как только вы это сделаете,Вы можете указать diff-фильтр в вашем файле .git/config или в вашем личном файле .gitconfig.это определяет, как изменить файл для отображения различий.Например, вы могли бы написать что-то вроде этого:

[diff "vim"]
    textconv = "sed -e 's/ # {{{.*$//' -e 's/ # }}}.*$//'"

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

...