下面将让你的大部分的方式有:
$ clean=`git diff --cached -b`; \
git apply --cached <(git diff --cached -R); \
echo "$clean" | git apply --cached -; \
clean=
对于之前的1.7.0的Git版本中,如果一个或多个文件都空白改变它失败。例如
$ git diff --cached -b
diff --git a/file1 b/file1
index b2bd1a5..3b18e51 100644
diff --git a/file2 b/file2
new file mode 100644
index 0000000..092bfb9
--- /dev/null
+++ b/file2
[...]
空三角形(的file1
以上,这真的应该被抑制)使得git-apply
不快:
fatal: patch with only garbage at line 3
UPDATE: GIT中fixes this issue的1.7.0版本。
说我们的仓库是在以下状态:
$ git diff --cached
diff --git a/foo b/foo
index 3b18e51..a75018e 100644
--- a/foo
+++ b/foo
@@ -1 +1,2 @@
-hello world
+hello world
+howdy also
然后,我们可以运行上面的命令到餐桌索引和工作树:
$ git diff --cached
diff --git a/foo b/foo
index 3b18e51..1715a9b 100644
--- a/foo
+++ b/foo
@@ -1 +1,2 @@
hello world
+howdy also
$ git diff
diff --git a/foo b/foo
index 1715a9b..a75018e 100644
--- a/foo
+++ b/foo
@@ -1,2 +1,2 @@
-hello world
+hello world
howdy also
如果所有的改变都是空白,只有,你会看到
error: No changes
我怀疑修复索引并在工作中留下不希望的变化树会让大多数用户感到惊讶甚至不愉快,但这就是问题所要求的行为。
有趣的问题。听起来像一个有用的工具,如果它不存在。不是一个非常棘手的解析问题,但是让我们知道你最终做了什么。 – 2009-11-17 20:47:55
仅供参考,撞上你的git版本可能会使得空白问题变得更加可管理。它为我工作。在这里看到我的问题:http://stackoverflow.com/questions/1316364/git-whitespace-woes * smiles * – Kzqai 2009-11-17 23:48:51
@Max我的答案中描述的行为是在v1.7.0版本:http://www.kernel。 org/pub/software/scm/git/docs/RelNotes-1.7.0.txt – 2010-02-13 18:08:37