git - 从 git 阶段删除 "no newline at end of file"更改

标签 git sed newline

我在大型代码库上执行了 sed 搜索/替换,对于 sed 传递的每个文件,如果之前没有,它会在末尾添加一个换行符。虽然以\n 结束最后一行是一个很好的约定,但这是一个巨大的差异,与我试图完成的目标无关。该更改影响了数百个文件,我不想手动检查这些文件并手动 git checkout

有没有什么方法可以选择性地添加或删除阶段性更改,以便忽略只有“文件末尾没有换行符”的文件?

最佳答案

从链接的相关问题中,我发现 git diff --ignore-all-space 会忽略只有空格更改的文件。 git diff --ignore-all-space --name-only 没有像我预期的那样工作,但是这样做:

git diff --ignore-all-space | grep "+++"

这给了我一个文件列表,其中包含除空白以外的更改,它足够小,我可以手动将它们全部添加到舞台并提交。

感谢大家的评论,他们非常有帮助。

关于git - 从 git 阶段删除 "no newline at end of file"更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25317902/

相关文章:

Git 过滤分支仅适用于 fork 提交

linux - 在 bash 生态系统中为逗号分隔的字符串添加后缀

linux - 监视日志文件时的错误处理

c++ - 在 SFML 中超出窗口边界时将光标发送到新行?

php - 如何在 php 中不换行地回显?

parameters - 如何将带有新行的文本作为参数传递给bat文件?

git - 是否可以让 git 在推/pull 期间加密和解密文件?

git-merge-base 只返回一个提交

bash - 使用一个命令的输出作为 sed 中的替换文本

git - 无法将文件添加到 Git 存储库