Ale*_*ega 7 git diff patch apply format-patch
我正在尝试将未提交的更改从本地 git 存储库移动到另一个本地存储库。在 repo 1 上,我创建了一个如下所示的补丁:
git diff > my_patch.patch
检查补丁:
more my_patch.patch
git diff 我得到与在第一个存储库上运行相同的输出。在第二个仓库中我运行:
git apply --stat my_patch.patch
0 files changed
如果我跑步,git apply my_patch.patch我不会有任何效果。
我创建的补丁错误吗?我应用错了吗?
重现问题的步骤:
git diff > ~/my_patch.patchgit apply ~/my_patch.patchgit status。没有变化!建议另一种将未提交的更改转移到另一个本地存储库的方法也可以很好地解决我的问题。
现在不仅您的用例(2021 年第 4 季度,Git 2.34+)按预期工作,而且 Git 2.35(2022 年第 1 季度)“ git apply” (man)也被教导在没有带有该选项的补丁的情况下忽略消息--allow-empty。
它学会了尊重--quiet命令行给出的选项。
请参阅Jerry 张 ( )的提交 324eb77和提交 c21b8ae(2021 年 12 月 13 日)。(由Junio C Hamano 合并 -- --提交62a3a27,2021年 12 月 22 日)jerry-skydio
gitster
git-apply: 添加--allow-empty标志签字人:张杰
当重放差异或提交时,某些用户或脚本会将“
git diff” (man)输出传输到(man) 。 在这些情况下,他们将依靠“ ”的返回值来了解差异是否已成功应用。git applygit apply但是,对于空提交,“
git apply”将会失败。
这使脚本变得复杂,因为它们必须缓冲 diff 并检查其长度,或者使用“退出代码”再次运行 diff,本质上是执行 diff 两次。将“
--allow-empty”标志添加到“ ”,这允许它通过不执行任何git apply操作并返回 0 来处理由( man )创建的空差异和空提交。git format-patch--always
git apply现在包含在其手册页中:
[--详细| --安静] [--不安全路径] [--允许空] [...]
git apply现在包含在其手册页中:
--allow-empty对于不包含差异的补丁,不要返回错误。
这包括空补丁和仅包含提交文本的补丁。
| 归档时间: | 
 | 
| 查看次数: | 8284 次 | 
| 最近记录: |