撤销所有被git diff -w忽略的更改

10

当我执行

git diff -w file_name

我只看到添加的行,但是当我去掉 -w 选项时,我也看到了很多删除和重新添加的行。

我想更改文件,以便仅显示不被 -w 选项忽略的更改。

有相应的命令吗?


也许可以使用类似我在 https://dev59.com/LnRB5IYBdhLWcg3wiHz7#592014 中提到的 pre-commit 钩子脚本? - VonC
@VonC:如果您能为我们提供那个脚本,我将非常感激。 - Abhishek Anand
@Abhishek,你是指像这个一样吗?https://github.com/imoldman/config/blob/master/pre-commit.git.sh - VonC
因为我的文件来自共享存储库,我想尽量减少提交/推送的更改。我需要一个脚本,如果仅仅是行末变化,就可以撤销一条更改(在单个行的粒度上)。谢谢。 - Abhishek Anand
2个回答

6

jupp0r的想法是正确的。首先,cd到您的存储库根目录。然后:

git commit -a -m 'Backup commit.'
git branch pre-patch
git reset --hard HEAD~
git diff --patch -w HEAD pre-patch > patch.diff
git apply patch.diff

我不确定这是否适用于二进制更改。如果不是,请事先单独提交它们。如果此过程失败,则您的代码位于pre-patch分支中。
这样做的目的:
  • 创建一个提交和一个分支来存储完整的更改。这也作为备份。
  • 回到之前进行更改的步骤。
  • 获取从旧代码到新代码的“diff -w”,格式为补丁。
  • 应用补丁。
注意:如果已经提交了更改并希望修改它,请省略第一步。

1

你可以做

git diff --no-color > stage.diff && git apply -R stage.diff && git apply --whitespace=fix stage.diff && rm -f stage.diff

如果您还没有提交任何更改。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接