我怎样才能格式化补丁与我藏起来的东西

在 git 里,我把我的零钱藏起来。有没有可能我可以用我藏起来的东西创建一个补丁?然后将该补丁应用到其他存储库(我同事的存储库) ?

我知道 git format-patch -1,但我认为这是为了我所承诺的。但是我在寻找同样的东西来改变我藏起来的东西。

如何在其他存储库中应用补丁?

62790 次浏览

当然,git stash show支持这一点:

git stash show -p

那就用吧

git stash list

找出你想要以补丁的形式出口的存货数量

git stash show -p stash@{<number>} > <name>.patch

出口。

例如:

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

使用

$> git stash list
stash@{0}: WIP on master: 84fx31c Merged with change to /public/
stash@{1}: WIP on master: 463yf85 FlupResource: also takes json as a query parameter

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 上隐藏了一些更改,称为 stash@{1}。

你现在可以切换到 B 分支,你可以这样做:

$git stash apply stash@{1}

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