将存储转换为#ifdef SYM分隔的工作更改

Kaz*_*Kaz 5 git

我有一组stash@{4}我想要应用的更改,但是以这样的方式将更改合并到工作副本(或者新的提交)中,以便可以通过预处理器符号选择任一版本.

(这是GNU diff和diff3程序的一个特性:请参阅--ifdef选项.)

比如像一个大块头

@@ -123,7 +123,7 @@
 a
 b
 c
-foo
+bar
 d
 e
 f
Run Code Online (Sandbox Code Playgroud)

实际上应用于工作文件

a
b
c
#ifdef SYM
bar
#else
foo
#endif
d
e
f
Run Code Online (Sandbox Code Playgroud)

如果SYM已定义,则文本对应于修补版本,而如果未定义,则文本将扩展为基本版本.

也许,这是可以做到的git merge,不知何故,告诉git使用diff3 --ifdef=SYM的合并?

Kaz*_*Kaz 5

显而易见的事情让我震惊:patch也有一个--ifdef/-D选择。

git stash show -p stash@{4} | patch -p1 -D SYMBOL
Run Code Online (Sandbox Code Playgroud)

完毕!