基于regex的git阶段变化

基于regex的git阶段变化,git,Git,我的很多调试代码都包装在页眉/页脚中。通常我运行一个脚本,在我转移并提交更改之前,它会从源代码中删除所有内容。如果调试代码需要持久化提交,我将运行git add-p,并分别处理块 我的问题是,是否有可能根据正则表达式进行阶段性更改?例如,给定以下javascript片段: function littleNinja( sword ) { /* debug:start */ console.log( sword ); /* debug:stop */ // do st

我的很多调试代码都包装在页眉/页脚中。通常我运行一个脚本,在我转移并提交更改之前,它会从源代码中删除所有内容。如果调试代码需要持久化提交,我将运行
git add-p
,并分别处理块

我的问题是,是否有可能根据正则表达式进行阶段性更改?例如,给定以下javascript片段:

function littleNinja( sword ) {
    /* debug:start */
    console.log( sword );
    /* debug:stop */
    // do stuff
}

我不希望git在包括
debug:start
debug:stop
之间的行中分段,我希望这个过程可以自动化。

这样做的一个好方法是在分段时使用过滤掉标记行。(下面的描述基本上与“Pro Git”那一节中描述的过程相同,与文档中的描述非常相似。)首先,我们需要一个命令来删除(包括)每个
debug:start
debug:end
之间的行,幸运的是,这是一个使用
sed
的简单作业:

sed '/debug:start/,/debug:stop/d' < foo.js
现在定义
条带调试
过滤器在“清理”(登台时)或“涂抹”(签出时)时的功能:


我(非常简短地)测试了它,它似乎可以满足您的需求。

这是不可能的。即使是这样,有时调试块也会与另一块不可分割,而您确实希望将其暂存。您需要一个自定义脚本来处理这种情况,或者以交互方式将选择委托给您。然后可能将脚本别名为git命令。我想是这样的,但我想再次检查。谢谢
*.js filter=strip-debug
git config filter.strip-debug.clean "sed '/debug:start/,/debug:stop/d'"
git config filter.strip-debug.smudge cat