Хороший способ сделать это - использовать чистые и грязные фильтры , чтобы отфильтровать отмеченные линии по мере их постановки. (Описание, приведенное ниже, по сути аналогично процедуре, описанной в этом разделе «Pro Git», и очень похоже на описанное в документации git attribute .) Прежде всего, нам нужна команда удаляет строки между (и включая) каждым debug:start
и debug:end
- к счастью, это простая работа с sed
:
sed '/debug:start/,/debug:stop/d' < foo.js
Теперь создайте файл .gitattributes
на верхнем уровне вашего git-репозитория, который содержит следующую строку:
*.js filter=strip-debug
А теперь определите, что фильтр strip-debug
делает как при «очистке» (при подготовке), так и при «смазании» (при оформлении заказа):
git config filter.strip-debug.clean "sed '/debug:start/,/debug:stop/d'"
git config filter.strip-debug.smudge cat
Я (очень кратко) проверил это, и он, кажется, делает то, что вы хотите.