问题标签 [git-am]

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 投票
2 回答
131 浏览

python - git am some_patch 是否以原子方式应用?

我编写了一个自动化代码来通过 git python 库应用 git 补丁。但是我想知道是否有可能应用了一些补丁,而有些补丁会出错。

0 投票
2 回答
1305 浏览

git - git am:补丁格式检测失败。git apply 也失败了

我正在尝试学习 git 补丁,所以我设置了一个测试仓库并进行了一些提交。

然后我创建了一个补丁:git format-patch -1 HEAD --stdout > changes.patch

接下来,我检查了一个新分支并尝试使用 changes.patch: git am .\changes.patch。它给了我错误Patch format detection failed.

我在这里搜索,发现了这个相关的问题

所以我尝试了git apply .\changes.patch。它给了我error: unrecognized input

补丁文件对我未经训练的眼睛来说似乎很好:

我认为可能是补丁与 repo 位于同一目录中,因此我将其移至另一个目录。结果是一样的。

我也注意到很多人<在命令中有一个,所以我试了一下:git am < ..\changes.patch. 显然这不是有效的语法。

这是在带有 PowerShell 的 Windows 上使用 64 位 git。

有任何想法吗?

0 投票
1 回答
168 浏览

git - 使用特定补丁编号应用一系列补丁

我有一组补丁,例如如下。

从给定的补丁号到最后应用补丁的最佳方法是什么。我的意思是我们可以在使用git am应用补丁时指定“范围”吗?

例如,我想应用从 0003 到 0005 的补丁。我应该使用git am的什么标志?还有其他方法吗?

0 投票
1 回答
5259 浏览

bash - git apply 错误没有这样的文件或目录

我有两个单独的 git 存储库:A 和 B。一些存储库 B 文件已经存在于项目 A 的子文件夹中。我的目标是为存储库 B 创建补丁,然后将它们应用到存储库 A 中的子文件夹以保存存储库 B 的历史记录在合并它们时。问题是补丁无法创建新文件。例如:

假设这个文件夹结构: /home/user/B/..bunch 目录和 /home/user/A/ext/lib/B/..bunch 目录

cd /home/user/B

git format-patch "xx..xx" -o /home/user/A/ (创建补丁文件)

cd /home/user/A

git apply -v --directory=ext/lib/B/0001-foo-12345.patch

工作正常,因为补丁没有创建任何新文件或尝试访问 B 中存在但 A 中不存在的文件夹

cd /home/user/A

git apply -v --directory=ext/lib/B/0002-foo2-6789.patch

不起作用并抛出此错误:检查补丁 ext/lib/B/xyz/test.c... 错误:ext/lib/B/xyz/test.c:没有这样的文件或目录。

到目前为止,我已经尝试了以下命令:

git apply -v --directory=/home/user/A/lib/B/ --include=bb/cc --exclude=cc/ --exclude=bb/ --include=* 0002-foo2-6789.patch

git apply -v --directory=/home/user/A/lib/B/ --include=* --include=bb/cc --exclude=cc/ --exclude=bb/ 0002-foo2-6789.patch

git am --directory=/home/user/A/lib/B/ --include=* --include=bb/cc --exclude=cc/ --exclude=bb/ 0002-foo2-6789.patch

0 投票
0 回答
1503 浏览

bash - 如何修复 Git am 错误“.git/rebase-apply 仍然存在但 mbox 给定”?

我有一个只包含.patch文件的文件夹。当我运行命令时

我收到一个fatal: previous rebase directory .git/rebase-apply still exists but mbox given.错误。我尝试使用git am --abort和简单地删除rebase-apply文件夹 - 这实际上都没有帮助。你能帮我解决我的问题吗?

编辑:我知道Git 错误的问题:以前的变基目录 .git/rebase-apply 仍然存在,但 mbox given。那里提供的答案并不能帮助我解决这个问题。

0 投票
1 回答
288 浏览

git - 带有邮箱补丁的 git-am 在包含求职信时失败

当运行 git-am 应用我从邮件列表保存到 mbox 文件中的补丁系列时,如果 mbox 还包含求职信(也称为 PATCH [0/N]),它会抱怨如下:

求职信确实是一个空补丁,因为其中没有补丁分隔符,但我认为git am会足够聪明地注意到它并完全跳过它。这不是一个大麻烦,因为我可以跳过从 mutt 将此补丁添加到 mbox 中而不会遇到麻烦,但有时一个补丁系列到达邮件列表时有些混乱,我不能只是将整个线程复制到同一个 mbox 中。或者,我可以手动跳过补丁,它会顺利应用。

当它确实是求职信时,有什么方法可以指示 git am 跳过补丁号 0?

0 投票
1 回答
550 浏览

git - 为什么 git apply 并且失败了?

我有一个包含单行更改的补丁文件。运行git am失败并显示以下消息:

目标文件在更改的行上方确实有几行额外的行。这是因为 git 无法确定单行更改的位置而失败吗?如果是这样,这是否意味着目标文件和源文件需要本质上相同?

使用相同的补丁运行git apply会产生以下消息:

我相信这基本上是相同的信息,只是友好(或者,至少,不那么冗长。)

我是否正在尝试一些补丁不适合的东西?即,将更改从一个存储库应用到另一个不具有文件内容等效性的存储库。

我确实找到了这篇文章,但是当使用相同的解决方案时,我得到的只是没有变化和一个简单的.rej文件输出。

0 投票
0 回答
86 浏览

git - 从 git 存储库为目标目录创建补丁或差异文件,并将其应用于具有不同目录的另一个不同 git 存储库

是类似的问题。

但我只想从当前目录提交并完全删除相对路径或更改路径

例如通过这样做:

我得到带有ext/DbAccess/Mojolicious/Command/db_env.pm路径的补丁。但我想要Mojolicious/Command/db_env.pm,因为我目前在ext/DbAccess目录中。

这可能吗?

0 投票
1 回答
42 浏览

git - 在应用 git 补丁过程中发生冲突是否正常?

我有两个存储库,比如说main repoand copy repo,它们必须使用补丁进行同步。他们的master分支是同步的,我从main repo-branch devon应用补丁copy repo。在创建补丁并将其应用到之后copy repo,我将dev分支合并到masteronmain repo以保持它们同步。

我已经main repo使用以下方法创建了补丁文件:

当我尝试将此补丁应用到copy repo使用时:

我得到Patch failed at 0002 ...并且我必须解决补丁文件中几乎每个提交的冲突。

问题是在应用补丁期间发生冲突是否正常?我以前做过,但没有发生这样的问题。

解决如此多的冲突(大约 50 次提交)是一个非常困难且令人困惑的过程。我正在使用PyCharm本身来解决每个补丁失败的冲突,但仍然很难。有没有更简单的方法来做到这一点?

为什么会发生这些冲突?是因为我merges在这些提交之间有吗?