使用git am命令应用多个补丁

6
我想将一个git仓库中的多个补丁应用到另一个仓库中。我已经使用以下命令创建了这些补丁(我需要最近的13个更改):
cd repoA
git format-patch -13 -o ..\patch-directory
cd ..\repoB
git am ..\patch-directory\*.patch

这将会给出:
fatal: could not open '..\patch-directory\*.patch' for reading: Invalid argument

一个非常相似的问题,似乎表明这是正确的方法(如何一次应用多个git补丁),但它不起作用。我可以通过在多个命令中传递完整的文件名来单独应用补丁(而且,我可以轻松地创建一个脚本来逐个应用它们),但是,我想知道为什么这不起作用。
我正在使用git version 2.9.2.windows.1

你尝试使用绝对路径了吗?看一下这个答案:https://dev59.com/x2Qn5IYBdhLWcg3w1qEc#29888775 - Frodon
提供绝对路径也不起作用,错误相同。 - MuertoExcobito
你尝试过使用 format-patch 命令加上 --relative 参数吗? - Frodon
将“--relative”传递给“format-patch”与不传递相同,因此仍然无法正常工作。 - MuertoExcobito
我不使用Windows,所以我不确定下一步该怎么做,但显然问题在于你正在使用的命令行解释器未能将*.patch扩展为各种补丁。 - torek
2
我遇到了同样的错误,并且使用随 Git 安装的 Git bash(https://git-scm.com/downloads)得以解决。 - James Tupper
1个回答

7
如果您使用的Shell不支持通配符扩展,那么您需要自己执行此操作或使用支持该功能的Shell。Windows Shell不支持此功能,因此您可以使用Git Bash或Powershell。
git am (dir ..\patches\*.patch)

将会扩展名称,然后将所有扩展名称作为参数传递给git am

另一种选择可能是使用foreach-object调用(dir ..\patches\*.patch | ForEach-Object { git am $_}),但我担心它无法正确处理失败的补丁。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接