我正在尝试使用命令行为我的工作区中的未提交更改创建补丁。我正在使用以下命令来创建补丁
git diff> diff.patch。
这确实会创建一个补丁,但在补丁中它会显示差异
diff --git a/hedwig-client/src/main/java/org/apache/hedwig/client/netty/impl/multiplex/MultiplexHChannelManager.java b/hedwig-client/src/main/java/org/apache/hedwig/client/netty/impl/multiplex/MultiplexHChannelManager.java
index f28a6b2..3db2b7f 100644
--- a/hedwig-client/src/main/java/org/apache/hedwig/client/netty/impl/multiplex/MultiplexHChannelManager.java
+++ b/hedwig-client/src/main/java/org/apache/hedwig/client/netty/impl/multiplex/MultiplexHChannelManager.java
我希望这条路径中的a和b不存在。所以它看起来像是
diff --git hedwig-client/src/main/java/org/apache/hedwig/client/netty/impl/multiplex/MultiplexHChannelManager.java hedwig-client/src/main/java/org/apache/hedwig/client/netty/impl/multiplex/MultiplexHChannelManager.java
知道如何做到这一点。
答案 0 :(得分:2)
有一个命令行开关:git diff --no-prefix
,但你真的不想使用git diff
,你应该做正确的事情并在私有分支上进行提交,然后使用{{ 1}}从这些中生成格式良好的补丁系列(它接受相同的开关)。
还有git format-patch
和--src-prefix
来指定任意路径。但请记住,即使不使用git,大多数人也会使用--dst-prefix
或类似的东西......几乎总是需要前缀路径。
答案 1 :(得分:-1)
只需删除有问题的字符即可修改补丁:
git diff | sed -e 's|^\(diff --git \)a/\(.* \)b/\(.*\)|\1\2\3|' > diff.patch
这将检查模式diff --git a/... b/...
,将其拆分为5个部分(diff --git
,a/
...
,b/
,...
)并遗漏a/
和b/
部分。