从Gerrit下载的补丁文件如何应用?

20
在 Gerrit 中,在更改的下载部分下,有一个允许您下载补丁文件的部分: enter image description here 使用 git apply 会产生以下结果:
$ git apply 441eb56b.diff.base64
fatal: unrecognized input
我该使用哪个命令来应用这个补丁?
3个回答

22
base64 --decode c6a9dcdb.diff.base64 > c6a9dcdb.diff
git apply c6a9dcdb.diff

(用Gerrit给你的任何缩写提交哈希代替c6a9dcdb。)


8
以下是可能的解决方案:
  1. 复制并粘贴 Cherry Pick 的命令。

  2. 复制并粘贴 Checkout 的命令,并运行 git format-patch -1 来创建补丁,可以在 git amgit apply 中使用。您还可以运行 git diff HEAD^..HEAD > xxx.patch 生成一个补丁,可以在 git apply 中使用。

  3. 下载 diff.zip,解压缩后使用 git apply 命令应用。

  4. 下载 diff.base64,解码后使用 git apply 命令应用。

  5. CheckoutCherry Pick 命令中运行 git fetch 部分,使用 git mergegit rebasegit cherry-pick 或任何可操作提交的命令来应用所需的补丁。

  6. 如果要将补丁应用于 Gerrit 中找到的另一个分支,请使用 cherry-pick 按钮进行操作。


6

这是一个Base64编码文件(详见此处)。您需要先解码该文件(详见此处)。我认为使用Cherry Pick方法更容易。


是的,最终我挑选了这个变更。但补丁数据非常有趣。 - Fantastic Mr Fox
当然,您也可以将base64解码结果导入到git apply中。但是无论如何,下载补丁的功能似乎主要是为那些没有已检出的git repo的人准备的,在这种情况下,cherry-pick当然更容易。请参见[bugtracker](https://bugs.chromium.org/p/gerrit/issues/detail?id=302)。我想要的是一个真正只下载补丁集之间差异的补丁下载,这样就不会干扰到我对同一补丁集所做的更改。 - sebkraemer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接