问题标签 [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.
python - git am some_patch 是否以原子方式应用?
我编写了一个自动化代码来通过 git python 库应用 git 补丁。但是我想知道是否有可能应用了一些补丁,而有些补丁会出错。
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。
有任何想法吗?
git - 使用特定补丁编号应用一系列补丁
我有一组补丁,例如如下。
从给定的补丁号到最后应用补丁的最佳方法是什么。我的意思是我们可以在使用git am应用补丁时指定“范围”吗?
例如,我想应用从 0003 到 0005 的补丁。我应该使用git am的什么标志?还有其他方法吗?
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
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。那里提供的答案并不能帮助我解决这个问题。
git - 带有邮箱补丁的 git-am 在包含求职信时失败
当运行 git-am 应用我从邮件列表保存到 mbox 文件中的补丁系列时,如果 mbox 还包含求职信(也称为 PATCH [0/N]),它会抱怨如下:
求职信确实是一个空补丁,因为其中没有补丁分隔符,但我认为git am
会足够聪明地注意到它并完全跳过它。这不是一个大麻烦,因为我可以跳过从 mutt 将此补丁添加到 mbox 中而不会遇到麻烦,但有时一个补丁系列到达邮件列表时有些混乱,我不能只是将整个线程复制到同一个 mbox 中。或者,我可以手动跳过补丁,它会顺利应用。
当它确实是求职信时,有什么方法可以指示 git am 跳过补丁号 0?
git - 为什么 git apply 并且失败了?
我有一个包含单行更改的补丁文件。运行git am
失败并显示以下消息:
目标文件在更改的行上方确实有几行额外的行。这是因为 git 无法确定单行更改的位置而失败吗?如果是这样,这是否意味着目标文件和源文件需要本质上相同?
使用相同的补丁运行git apply
会产生以下消息:
我相信这基本上是相同的信息,只是友好(或者,至少,不那么冗长。)
我是否正在尝试一些补丁不适合的东西?即,将更改从一个存储库应用到另一个不具有文件内容等效性的存储库。
我确实找到了这篇文章,但是当使用相同的解决方案时,我得到的只是没有变化和一个简单的.rej
文件输出。
git - 从 git 存储库为目标目录创建补丁或差异文件,并将其应用于具有不同目录的另一个不同 git 存储库
这是类似的问题。
但我只想从当前目录提交并完全删除相对路径或更改路径
例如通过这样做:
我得到带有ext/DbAccess/Mojolicious/Command/db_env.pm
路径的补丁。但我想要Mojolicious/Command/db_env.pm
,因为我目前在ext/DbAccess
目录中。
这可能吗?
git - 在应用 git 补丁过程中发生冲突是否正常?
我有两个存储库,比如说main repo
and copy repo
,它们必须使用补丁进行同步。他们的master
分支是同步的,我从main repo
-branch dev
on应用补丁copy repo
。在创建补丁并将其应用到之后copy repo
,我将dev
分支合并到master
onmain repo
以保持它们同步。
我已经main repo
使用以下方法创建了补丁文件:
当我尝试将此补丁应用到copy repo
使用时:
我得到Patch failed at 0002 ...
并且我必须解决补丁文件中几乎每个提交的冲突。
问题是在应用补丁期间发生冲突是否正常?我以前做过,但没有发生这样的问题。
解决如此多的冲突(大约 50 次提交)是一个非常困难且令人困惑的过程。我正在使用PyCharm本身来解决每个补丁失败的冲突,但仍然很难。有没有更简单的方法来做到这一点?
为什么会发生这些冲突?是因为我merges
在这些提交之间有吗?