使用git diff为未提交的更改创建补丁显示/ ....和b /

时间:2015-07-09 08:50:41

标签: git git-diff

我正在尝试使用命令行为我的工作区中的未提交更改创建补丁。我正在使用以下命令来创建补丁

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

知道如何做到这一点。

2 个答案:

答案 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 --gita/ ...b/...)并遗漏a/b/部分。