【发布时间】:2014-10-08 16:28:28
【问题描述】:
我在大型代码库上执行了 sed 搜索/替换,对于 sed 传递的每个文件,如果之前没有文件,它会在末尾添加一个换行符。虽然用 \n 结束最后一行是一个很好的约定,但这是一个巨大的差异,与我试图完成的任务无关。该更改影响了数百个文件,我不想手动检查这些文件并手动git checkout。
是否有任何方法可以选择性地添加或删除分段更改,以便忽略“文件末尾没有换行符”的文件?
【问题讨论】:
-
也许你可以做两次提交:第一次向每个没有的文件添加一个 \n,另一个做你正在用 sed 做的事情;这应该可以一劳永逸地解决问题......
-
@Carpetsmoker - 这会起作用,但首先我必须将受影响的文件分成具有实质性更改的文件和最后只有一个更改的文件以进行两次提交。如果我在做任何其他工作之前接受了您的建议,事情就会变得容易得多。
-
@BenMorris 如果时间不是最重要的,你总是可以在
sed搜索/替换之前回退到提交,并遵循 Carpetsmoker 的建议。 Git 的美妙之处在于,您(几乎)不必告诉自己“我之前应该这样做......”。 -
@Jubobs - 这绝对有帮助。我只能看到带有
git diff --ignore-all-space的重大更改的文件。但是,如果我尝试使用git diff --ignore-all-space --name-only来获取文件列表以便我可以将它们添加到舞台,由于某种原因,该列表仍然包含只有空格更改的文件。它已经接近了,但还没有完全发挥作用。