Git 我如何用我藏起来的东西格式化补丁

Git 我如何用我藏起来的东西格式化补丁,git,git-stash,git-patch,Git,Git Stash,Git Patch,在git中,我隐藏我的更改。我能用我藏起来的东西创建一个补丁吗?然后在其他存储库(我的同事的)中应用该修补程序 我知道git格式补丁-1,但我认为这是为了我所承诺的。但我也在为我隐藏的变化寻找同样的东西 如何在其他存储库中应用修补程序?当然,支持此功能: git藏匿秀-p 所以,使用 git隐藏列表 要找出要导出为修补程序的存储的编号,请 git stash show-p stash@{}>.patch 出口它 例如: git stash show-p stash@{3}>third_s

在git中,我隐藏我的更改。我能用我藏起来的东西创建一个补丁吗?然后在其他存储库(我的同事的)中应用该修补程序

我知道git格式补丁-1,但我认为这是为了我所承诺的。但我也在为我隐藏的变化寻找同样的东西

如何在其他存储库中应用修补程序?

当然,支持此功能:

git藏匿秀-p

所以,使用

git隐藏列表
要找出要导出为修补程序的存储的编号,请

git stash show-p stash@{}>.patch
出口它

例如:

git stash show-p stash@{3}>third_stash.patch
使用

去拿你最近藏的东西的清单。Git实际上在您隐藏时创建提交对象

他们和其他任何东西一样都很重要。您可以在分支机构中查看它们:

$> git checkout -b with_stash stash@{0}

然后,您可以发布此分支,您的同事可以合并或挑选提交的分支。

上述解决方案不适用于二进制数据。 以下内容添加了对它的支持:

git stash show stash@{0} -p --binary
编辑


注意:我只是想在上面的回复中添加一条评论,但我的声誉还不够

此答案提供了有关保存修补程序和将其应用于您想要使用的位置的信息

要将输出隐藏在文件中,请执行以下操作:

 git stash show -p --color=never > my-patch-name.patch
验证修补程序是否正常:

git apply --stat my-patch-name.patch
验证无错误:

git apply --check my-patch-name.patch
应用补丁

git apply my-patch-name.patch

我相信这可能是Git最近发布的最新消息之一。您不必再修补隐藏的更改。您可以将一个分支上隐藏的更改应用于另一个分支

假设您在分支A上隐藏了一些更改,称为隐藏{1}

现在切换到分支B。您只需执行以下操作:

$git stash apply stash@{1}

这会将您的分支A更改应用到分支B。

我有一个关于应用补丁的相关问题。假设我的补丁涉及多个文件。有没有“交互”应用补丁的方法?选择我应该应用修补程序的修补程序的哪些文件?我可以这样做吗?@silverburgh:我快速浏览了
manpatch
,没有看到任何交互式补丁应用的选项。但是,由于修补程序文件本身是纯文本文件,通常需要在文本编辑器中编辑修补程序,以剪裁出相关部分,以便使用
patch
应用。或者,如果您要将修补程序应用到另一个Git存储库中,您可以应用所有修补程序,然后有选择地
Git签出
您不想更改的文件(
Git签出
带有文件名的文件会丢弃未老化的更改)。@silverburgh您可以使用“-exclude”和“-include”来限制修补的文件集git的参数apply@silverburgh假设您有一个补丁,您可以执行以下操作。完全应用补丁,然后执行
git add--interactive${YOUR_FILES}
,这样您就有机会部分提交。谢谢。这对我有效:
git stash show-p stash@{1}>patch.txt
这一个对纯文本代码文件有效,但我必须考虑空白。验证修补程序是否正常:
git apply--check--忽略空格更改--忽略空白我的修补程序名。patch
应用修补程序:
git apply--忽略空格更改--忽略空白我的修补程序名。patch
解释简洁明了。为了让它工作,我在应用补丁时必须在repo根目录下,否则
git-apply
就无法识别差异。
$git stash apply stash@{1}