git Gerrit格式Patch

weylhg0b  于 5个月前  发布在  Git
关注(0)|答案(1)|浏览(85)

Gerrit“Format Patch”和“Checkout”选项之间有什么区别?基本上我希望提交的所有更改都在我的本地目录中,而不需要在我的本地仓库中进行新的提交。

hmtdttj4

hmtdttj41#

两者都首先调用git fetch <url> refs/changes/xx/xxx/xx以获取更改的历史记录。
然后Format Patch调用git format-patch -1 --stdout FETCH_HEAD。它会生成一个当前补丁集的补丁。您可以将其重定向到本地文件或删除--stdout,以便创建一个名为0001-xxxx.patch的补丁。

注意,如果您要将补丁发送给其他人,或者您要在其他仓库中应用补丁,最好将--binary附加到git format-patch,这样您就不必考虑提交是否更改了任何二进制文件。应用补丁的仓库可能没有这些二进制文件的必要数据,这将使应用失败。使用--binary,必要的数据也包含在补丁中。

然后Checkout调用git checkout FETCH_HEAD。它将本地代码切换到更改的当前补丁集的修订版,并导致分离的HEAD状态。
如果你想把提交的修改引入到本地分支,你可以粘贴Cherry Pick的命令,并附加-n选项,然后运行它。另一种方法是先运行Format Patch的命令,而不运行--stdout,然后运行git apply -3 0001*.patch

相关问题