css - Git add -patch...但忽略空格更改

标签 css git github whitespace removing-whitespace

我似乎找不到使用 git add -p 的好方法,但告诉 git 忽略所有空白更改。我不想重置我的本地更改。

情况:我在本地进行了所有更改,并将它们分组到单独的提交中。然后我尝试了一个 minifyer,并用他们的缩小版本覆盖了我所有的 css 文件。我尝试“取消缩小”所有内容,但它仍然搞砸了 git diff——因为有太多空白更改——而且我似乎无法让我的 repo 协议(protocol)回到我可以看到实际变化的地方。

感谢您的帮助!

最佳答案

重置和读取(推荐)

这是最简单的方法。 如果您不想在您的工作目录中重置和读取,则没有一行直接的方法。你应该这样做,这是一个很好的方法,一步一步解释:

git diff -w --no-color | git apply --cached --ignore-whitespace && git checkout -- . && git reset && git add -p

git diff -w --no-color 创建一个没有终端格式和颜色的差异

git apply --cached --ignore-whitespace 应用 diff 忽略空白,并为其编制索引

git checkout -- . 删除未索引的“空白”更改

git reset 将索引重置为仅非空白更改

git add -p 以补丁模式添加非空白更改

( source here )


不重置

这部分解决了您的问题,无需 stash 或重置。 您可以通过以下方式仅“区分并应用”非空白更改:

git diff -w --no-color | git apply --cached --ignore-whitespace

这是另一种方式,但请注意,这里打补丁有点乱,您需要缓冲并手动更改 diff 以去除空格。 如果您使用 VIM,可以使用以下快速分步命令来缓冲、快速查找、删除并最终应用干净的差异:

:r !git diff -w --no-color 这会用你的 diff 创建一个新缓冲区

:set ft=diff (可选)如果你想要语法高亮使用这个

现在您需要手动删除您不想暂存的内容,然后

:w !git apply --cached --ignore-whitespace 应用当前固定差异

并最终使用 :!git commit -m "your fixed commit" 提交这个差异

这是第一次迭代。您需要清除缓冲区,读取未暂存的更改并重复:

:bd! | set ft=diff | r !git diff -w --no-color

继续前进,最终,您将只剩下要提交的空白更改。

如果你不想使用 VIM:

  • 将 git diff 转储到文件中
  • 使用您最喜欢的 IDE/文本编辑器编辑文件
  • 将编辑后的文件送入 git apply。
  • promise
  • 重复直到完成。

这可能不是最快的方法,但它很实用,如果您不喜欢第一种方法,它可以解决问题。

(来源和类似问题 here )

关于css - Git add -patch...但忽略空格更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44424041/

相关文章:

jquery - 文档正文溢出隐藏的问题

javascript - 如何从 Slick Slider 中删除类?

git - 使用 git 历史研究源代码的工具

Git rm,当我只删除一个文件时给出可怕的 "Deletion of directory failed"

GitHub WebHooks 全局触发,而不是每个分支

javascript - 在将 "Table"转换为 "Div"时处理 rowspan 和 colspan

javascript - 如何使用按钮创建自动幻灯片

git - 在 AWS 上安装 Gitlab

linux - 由于权限问题,在 Windows 中使用 ssh 进行 git 克隆失败

git - 我可以在 github 上使用商业项目的开源代码工作吗?如何做?