问题标签 [format-patch]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
git - git format-patch 为提交的特定文件部分生成补丁
我正在尝试合并一些为名为dev
. 一些文件被添加,一些被改变。有没有办法为提交中的选定文件生成补丁,以便它们可以应用于主文件?我期待然后将补丁应用到大师。
git format-patch -1 SHA1 --stdout
正在为整个提交生成补丁,但我只需要在提交中生成补丁特定文件。
git - git - 维护您的补丁与专有的未版本化源
我觉得 git“应该”能够处理这种情况,我认为我们的情况与此略有不同: Maintaining custom patch on third party code
基本上我们的工作流程是:
专有网站引擎上的自定义补丁
网站有自己的升级过程,覆盖所有文件
现在我们在升级中引入了差异,以及我们的补丁
我确实保留了他们的点发布的单独存储库,并且我能够将其与我们的更改相匹配。现在我手动修补这些。
在我看来,除非有我可以利用的高级工作流程,否则我无法以更自动化的方式处理这个问题?
git - git format-patch 禁用主题行中的补丁号
当我使用git format-patch
一次创建多个补丁文件时,补丁的编号被添加到主题行。
是否可以禁用<number>/<amount>
?
git - Git 格式补丁补丁不能跨不同的存储库使用 LFS
我们目前正在从 CVS 迁移到 git 存储库。然而,一个团队大约一年前已经在他们的存储库中使用了 cvs2git,因为他们的新功能需要大量具有历史记录的移动文件,而 CVS 在历史上并不擅长。然后,两个存储库都应该使用 GIT-LFS 来获取我们更大的签入源(例如,预构建的外部库)
我们的想法是创建相同的起点,以便在我们迁移后将所有更改与历史合并到我们的存储库中。
所以我已经有了起点的精确复制品;想法是现在使用 git format-patch 创建所有补丁文件。现在大多数补丁都可以正常工作,问题只是使用 git lfs 的补丁。
一个例子:
当我尝试应用该补丁时,会发生以下情况:
我的下一个想法是使用原始存储库并使用 GIT_TRACE=1 获取所有 lfs 对象 git lfs fetch --all 之后我尝试复制一个对象(用于测试目的),结果导致
所以我想问题是:我是否可以将 LFS 对象添加到远程服务器,或者我是否必须“取消 lfs”用于创建 .patch 文件的存储库,以便存储二进制差异在 .patch 文件中?
我们真的很想保留历史,目前补丁的数量大约是 1600 次提交,这很难手动完成。
如果我遗漏了一些明显的方式,我很高兴有任何建设性的意见
git - git format-patch 用于对文件的所有提交
我想为对文件/文件夹所做的所有提交获取补丁。
我可以通过git log --format="%H"-- path/to/folder
有没有办法可以从此列表中生成补丁。
[编辑]:
下面的代码部分解决了我的问题
for c in `git log --format="%H" -- path/to/file`;do
git format-patch "$c^1".."$c" -o patches ;
done
由于 format-patch 是单独调用的,因此我将获得所有编号为 0001-commit-text.patch 的补丁,其中我将丢失补丁的顺序。有没有更好的解决方案
git - 如何“git-am”应用使用“git-format-patch --no-prefix”创建的补丁?
--no-prefix
我有理由使用带有选项的 git-format-patch 将我的 git 提交创建为补丁文件。
此选项将补丁输出更改为不在补丁文件的文件路径中添加特定于 git-diff 的前缀a/
/ 。b/
它允许工具喜欢patch
应用补丁文件而无需-p1
作为参数传递。
到目前为止一切都很酷。但是,似乎我不能再用 Git 本身(git-am)实际应用它们了:
我现在如何应用它们git-am
,同时保持简单的patch
兼容性?
¹它允许我将它用作 Bazel 中的补丁文件,而无需自定义补丁命令,因为您需要使用patch -p1 [...]
.
git - 仅使用 git diff 或 git format-patch 来获取补丁后修改的行范围
我希望能够调用git diff [something] <commit0>..<commit1>
并获取自提交 0 以来已修改的提交 1 中的文件名和行号。目前,如果我有
并更改 '\nbar\n' -> 'baz',我明白了
如何指示 git diff 隔离新版本的第 2 行(1-indexed)foo.txt
已修改?是否可以不跳入脚本语言?
git - git add --patch hunk edition:如何删除上下文行?
我目前面临以下情况:
目标是删除所有评论。
这里的问题在于大块的结尾,它只包括块注释的开头,而不是它的结尾。因此,它将最后 3 行保留为上下文,而我也希望将它们删除。
尝试 n°1
保留原始上下文行,因此from-file-range
不需要修改
注意:尝试删除的每个上下文行的前导空格已正确替换(而不是仅仅预先放置),用-
.
尝试 n°2
删除原始上下文行
结果
两次尝试都遇到了:
笔记
使用git version 2.22.0.windows.1
如何编辑那个大块以达到抢手的效果?
git - 当格式补丁将未更改的行包含为已更改的行时,导致 git am 失败的原因是什么?
使用 git format-patch 后,我的补丁文件中出现了以下片段。
添加和删除的行都以 crlf 行结尾。这也是我遇到此问题时文件的第一行。
当我尝试使用git am --ignore-whitespace *.patch
带有类似于上述片段的补丁的补丁文件时会失败。我可以通过删除包含未更改的更改行的部分来轻松解决该问题,但希望有人至少可以解释可能发生的事情,因为我认为这不应该在第一个显示为更改行地方,我也不明白为什么应用补丁会失败,因为我不希望它与旧行和新行无关。
git - 应用使用 git diff 创建的 git 补丁
我正在尝试将未提交的更改从本地 git 存储库移动到另一个本地存储库。在 repo 1 上,我创建了一个这样的补丁:
检查补丁:
git diff
我得到与在第一个 repo 上运行相同的输出。在第二个仓库中,我运行:
如果我跑步,git apply my_patch.patch
我没有任何效果。
我创建补丁错了吗?我应用错了吗?
重现问题的步骤:
- 克隆存储库 2 次(相同的分支检出)
- 在第一个 repo 中,对文件进行一些更改(未提交)。
- 从更改创建补丁:
git diff > ~/my_patch.patch
- 转到第二个存储库。尝试并应用补丁:
git apply ~/my_patch.patch
- 运行
git status
。没有变化!
建议另一种将未提交的更改移动到另一个本地存储库的方法也可以很好地解决我的问题。