如果我从本地未提交的工作中创建了补丁,则它将失败。如果我提交我的工作,然后创建补丁,那么它将成功应用。为什么?

我想根据本地代码和远程源代码之间的差异创建补丁。

我这样做是:

git diff origin/myTestBranch > myPatch.patch 

我进入一个单独的目录,该目录克隆了相同的存储库,并且刚刚提取了myTestBranch。我使用

cd testPatchRepo
git clone ....
git checkout myTestBranch

当我尝试应用补丁时-失败!

但是,如果我使用git diff firstCommit ^...lastCommit > myPatch.patch进行工作并创建补丁该补丁没有问题 ......这不能解决我的问题,因为我仍然希望能够从我的本地未提交的工作中创建补丁。

这是从本地未提交的工作创建的补丁:

 diff --git a/scripts b/scripts
index 8640468..adfabd7 160000
--- a/scripts
+++ b/scripts
@@ -1 +1 @@
-Subproject commit 8640468cc4ba87bebee0e9e26939361bcb3e3afa
+Subproject commit adfabd7bf11566f2888a4501bc557265f1172ac2-dirty
diff --git a/source/tutorial/install.txt b/source/tutorial/install.txt
index 5fee5f6..5ef6e4b 100644
--- a/source/tutorial/install.txt
+++ b/source/tutorial/install.txt
@@ -16,7 +16,7 @@ Install {+bi-short+} on Windows

 .. include:: /includes/fact-bi-enterprise.rst

-Massaddie
+Maaaaassaddie
 To set up |bi|,follow the steps on this page.

提交更改后创建的补丁:

commit 983393a03262f8dccfd90b3c948751846ae583ae
Author: maddie <myemail>
Date:   Mon Dec 2 17:17:42 2019 -0500

    commit before make stage commit

diff --git a/source/tutorial/install.txt b/source/tutorial/install.txt
index 5fee5f6..5ef6e4b 100644
--- a/source/tutorial/install.txt
+++ b/source/tutorial/install.txt
@@ -16,7 @@ Install {+bi-short+} on Windows

 .. include:: /includes/fact-bi-enterprise.rst

-Massaddie
+Maaaaassaddie
 To set up |bi| with a business intelligence tool such as Tableau,follow the steps on this page.
yuduotianguang 回答:如果我从本地未提交的工作中创建了补丁,则它将失败。如果我提交我的工作,然后创建补丁,那么它将成功应用。为什么?

通常,您可以将git diff的输出应用于另一棵工作树,在这种情况下,则不能。原因是git diff显示您的子模块脏了:也就是说,它有未提交的更改。由于无法在差异中表示这些变化,因此任何应用它们的尝试都将失败。

如果要排除这些子模块更改,可以使用git diff --ignore-submodules,它将忽略子模块,无论是否修改。如果要递归包含它们,可以使用git diff --submodule=diff。该补丁不会更新子模块的提交本身,尽管它将更改子模块的工作树,因此不建议这样做。

这两个都应产生适用的补丁程序。

本文链接:https://www.f2er.com/2990187.html

大家都在问