问题标签 [git-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.

0 投票
1 回答
26 浏览

git - 使用大块编辑模式暂存重命名的属性

我正在尝试使用 'git add -p' 仅提交我的一部分代码。在下面的差异中,我想将“模型”重命名为“共享数据”(因此,删除模型行并添加共享数据行)。

我尝试使用多个设置在上下文中添加不必要的行(添加空格),但我得到“您编辑的块不适用。”:

删除上下文行也不起作用:

0 投票
1 回答
19 浏览

git - 如何在分支 B 和工作目录 A 中创建所有更改的补丁,比如 10 天?

我尝试使用命令

但是当我使用

我收到一个错误

0 投票
1 回答
917 浏览

git - 如何在具有更改历史记录的存储库上应用 git 补丁?

最近我从 SVN 迁移到 git,我的团队已经开始在新的 git 存储库中工作。

后来我发现了一些转换问题,并通过一些修复和历史重写从 SVN 制作了第二个 git repo。

现在我有 SVN 存储库的第二个 git 副本(我很满意),我想用我的团队在第一个 git 存储库中已经做出的更改来修补它。

为此,我尝试使用 git 补丁:

  • git-format-patch --zero-commit --stdout > master.patch创建已经对master第一个 git repo 进行的更改的单个文件
  • 并从 第二个存储库的文件git-am中应用提交*.patchmaster

我指定--zero-commit,因为补丁文件中的哈希是错误的,因为我实际上有两个不同的存储库。

问题是,当我尝试应用补丁时,git am master.patch我得到:

Applying: %commit_name% error: patch failed: readme.md:5 error: readme.md: patch doesn't apply Patch failed at 0001 %commit_name% 失败的补丁副本位于:.git/rebase-apply/补丁解决了这个问题后,运行“git am --continue”。如果您希望跳过此补丁,请运行“git am --skip”。要恢复原始分支并停止修补,请运行“git am --abort”。

即使我在这个补丁中只有一个提交并且我想将它应用到同一个 repo 以获得相同的提交,但是在另一个分支上。

0 投票
1 回答
151 浏览

git - 使用 git am 时,是否可以将提交者设置为在补丁中定义为作者的同一个人?

使用命令应用补丁时,是否可以将提交者设置为补丁中定义为作者的同一个人git am

0 投票
2 回答
48869 浏览

git - 如何为分支中的所有提交生成补丁?

如何通过只知道分支名称为给定分支中的所有提交生成补丁?

此步骤是复杂工作流程的一部分,所有这些工作流程都是自动化的。因此,要求某人手动确定分支中的第一次提交不是一种选择。

请注意,任何依赖 reflog 的东西都不是一个选项,因为分支中的更改不是在本地进行的。

0 投票
0 回答
716 浏览

git - Git 自动补丁子模块

我有一个带有子模块的 C++ 项目(我只有读取权限)。早期它只是代码的副本而不是子模块。在工作过程中,这个副本已经改变了一点。那么,如何在每次子模块更新后自动应用这些更改?

这真的是很小的变化,但删除它们会让我进行大代码编辑。

0 投票
1 回答
21 浏览

git - 如何使用 git 在新版本后重新修补主题

我正在使用一个主题 3 年。
我已经为自己修补了一点。

在dreamhost停止php 5.6之后,我必须更新到新版本。
从第一天开始,我就一直在使用 git。

您能否建议 git 如何帮助在新分支上再次应用相同的更改?

0 投票
1 回答
418 浏览

xcode - libgit2:如何在一个大块中展示特定的行

我正在编写一个 mac 应用程序,它允许我仅将包含特定文本的行作为子字符串暂存。基本上,我尝试构建源树为其用户提供的功能。在大块中分期选定的行。我的选择逻辑是,选择包含特定文本的行作为子字符串。但我不知道如何使用 libgit2 来实现这一点。

我已经像这样初始化了回购

然后我正在为工作目录创建一个差异索引,如下所示。

之后,我可以使用下面的回调函数遍历大块和每个大块中的行。

并且为大块中的每一行调用回调。

现在我意识到我需要以某种方式创建一个补丁,并且只将差异中的必要行添加到补丁中。

任何人都可以指导正确的方向吗?如果 libgit2 还不允许这样做,是否还有其他库可以让我这样做。atlassian 源代码树似乎也在后台使用 libgit2。他们怎么可能实现这一点?

顺便说一句,git CLI 允许通过此答案中给出的修补来做到这一点。 https://stackoverflow.com/a/32311872/569497

0 投票
3 回答
1908 浏览

git - 更改 git merge 的方向(合并完成后)

我在 git repo 中有一个分支(例如 Feature-X)。

我所做的是以下

我解决了很多冲突。我还没有提交更改。

但是,事实证明我想要做的是反向合并(即合并 master 到 Feature-x),因为分支可能仍然不稳定。

是否有任何命令可以挽救我在解决冲突中所做的工作,或者我是否需要再次解决,这次是在分支 Feature-X 中?

我在想是否有办法获取当前补丁,但以“反向”顺序将其应用到分支 Feature-X 中。例如,当补丁说 X 行更改为 Y 时,这是相对于 Feature-X 要掌握的。如果我想做相反的事情,补丁应该说 Y 行改为 X 行,对吗?这只是我的想法。任何解决方案都可以。

0 投票
3 回答
653 浏览

git - 跨多个重命名为两个文件创建 Git 补丁

我想将两个文件从一个存储库移动到另一个。这些文件最初添加为:

  1. /src/init/Price.cs
  2. /tests/init/PriceTests.cs

这两个文件后来被重命名为:

  1. /src/init/PriceValue.cs
  2. /tests/init/PriceValueTests.cs

然后移动到:

  1. /src/moved/PriceValue.cs
  2. /tests/moved/PriceValueTests.cs

我试图通过这个描述为这些文件创建一组补丁,但我不确定如何传递文件存在的六个不同路径。

我设法找到了所有影响PriceValue.cs(跨重命名和移动)的提交 ID,但是将这些 ID 传递给 Git 失败并显示以下错误消息:

那么,我如何为此创建一组补丁,其中仅包含对上述文件的更改,但在每个文件的一次重命名和一次移动中包含它?