标签: git-am

在应用补丁时,有什么方法可以解决冲突吗?

我在窗户上.

由于各种原因,我们有多个不同svn分支的git实例.

很多时候我想修复存储库A中的问题,生成补丁并将其应用到存储库B.除非存在冲突,否则这种方法很好.

重新定位时,我只需右键单击该文件夹并使用tortioseGit并选择解析选项.这带来了一个很好的gui,让我解决我的冲突.

有没有办法用拒绝的补丁块完成这个?

这是我目前创建/应用补丁的方法

git format-patch master --stdout > c:\\patch\\file.patch
git apply --reject --ignore-space-change --ignore-whitespace c:\\patch\\file.patch
Run Code Online (Sandbox Code Playgroud)

git git-am git-apply

112
推荐指数
4
解决办法
7万
查看次数

如何将Git补丁应用于具有不同名称和路径的文件?

我有两个存储库.在其中一个,我对文件进行了更改./hello.test.我提交更改并使用该提交创建补丁git format-patch -1 HEAD.现在,我有一个第二个存储库,其中包含一个与hello.test具有相同内容的文件,但是以不同的名称放在另一个目录中:./blue/red/hi.test.如何将上述补丁应用于hi.test文件?我试过,git am --directory='blue/red' < patch_file但当然抱怨文件名称不一样(我认为Git并不关心?).我知道我可以编辑差异以应用于该特定文件,但我正在寻找一个命令解决方案.

git filenames patch git-patch git-am

84
推荐指数
4
解决办法
3万
查看次数

如果git-am失败并且"索引中不存在"该怎么办?

当我尝试使用git am应用它时,我有一个补丁,它给出了以下输出

Checking patch old/filename...
error: old/filename: does not exist in index
Run Code Online (Sandbox Code Playgroud)

在补丁中,old/filename实际上被移动到new/filename,但似乎源树中已经缺少原始文件.

那么什么是错误以及如何解决/解决它?它可以被忽略(使用--reject等)吗?

git git-am

15
推荐指数
1
解决办法
1万
查看次数

git - cherry-pick - HOWTO/WHYTO

问题:您想测试某人已经开发的功能,但它只存在于远程分支中,这个功能已经过时了.

资源

  1. 樱桃挑选如何解决问题?
  2. 为什么我不使用git am或git apply?

git git-cherry-pick git-am

9
推荐指数
1
解决办法
2011
查看次数

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

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

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

cd /home/用户/B

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

cd /home/用户/A

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

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

cd /home/用户/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

git bash git-am git-apply

9
推荐指数
1
解决办法
3962
查看次数

git am应该忽略提交消息中的某些内容以"[]"开头?

我有一个提交消息,[Hello World]Something.
然后我使用git format-patch HEAD~1来修补补丁.
像这样的补丁内容:

Subject: [PATCH 1/7] [Hello World] Something.
Run Code Online (Sandbox Code Playgroud)

但是在我使用git am应用补丁之后,提交消息只变成了"Something",[Hello World]似乎丢失了.
应用补丁后,如何在"[]"中保留内容?

git git-am

8
推荐指数
2
解决办法
1183
查看次数

解决来自 am session 的冲突

我想从一个存储库中挑选多个提交到另一个。我按照此 Stack Overflow 帖子中提供的说明进行操作:

/path/to/2 $ git --git-dir=/path/to/1/.git format-patch --stdout sha1^..sha1 | git am -3
Run Code Online (Sandbox Code Playgroud)

并且发生了冲突:

Applying: commit-name-xxx
fatal: sha1 information is lacking or useless (path/to/conflicted/file).
error: could not build fake ancestor
Patch failed at 0001 commit-name-xxx
The copy of the patch that failed is found in: .git/rebase-apply/patch
When you have resolved this problem, run "git am --continue".
If you prefer to skip this patch, run "git am --skip" instead.
To restore the original branch and stop patching, …
Run Code Online (Sandbox Code Playgroud)

git git-am git-merge-conflict

7
推荐指数
1
解决办法
2973
查看次数

如何“git-am”应用使用“git-format-patch --no-prefix”创建的补丁?

我有理由\xc2\xb9 使用 git-format-patch 和选项创建我的 git 提交作为补丁文件--no-prefix

\n\n

此选项更改补丁输出,以不在补丁文件的文件路径中添加 git-diff 特定的前缀a// 。b/它允许应用补丁文件等工具,patch而无需作为-p1参数传递。

\n\n

到目前为止一切都很酷。然而,我似乎无法再用 Git 本身(git-am)来实际应用它们:

\n\n
$ git am path/to/0001-patch.patch\nApplying: <commit message subject>\nerror: <path>: does not exist in index\nPatch failed at 0001\n[...]\n
Run Code Online (Sandbox Code Playgroud)\n\n

我现在如何应用它们git-am,同时保持简单的patch兼容性?

\n\n

\xc2\xb9 它允许我在 Bazel 中将其用作补丁文件,而无需自定义补丁命令,因为您需要使用patch -p1 [...].

\n

git format-patch git-am git-apply

7
推荐指数
1
解决办法
3402
查看次数

失败的补丁改变了我的Git Bash提示,我该如何还原呢?

我尝试使用补丁git am <my.patch,但失败了.

现在我在Git Bash中得到这个:

sashoalm@SASHOALM-PC /c/Workspace/MyProject (master|AM 1/1)
Run Code Online (Sandbox Code Playgroud)

我的提示用于显示:

sashoalm@SASHOALM-PC /c/Workspace/MyProject (master)
Run Code Online (Sandbox Code Playgroud)

因此,从失败的补丁中"遗留"了一些东西,如何完全取消它,并返回到旧的提示?

git git-am

6
推荐指数
1
解决办法
980
查看次数

git cherry-pick和git format-patch有什么区别?git是吗?

有时我需要在分支中挑选具有一定修复能力的标签,然后通过

git cherry-pick tags/myfix
Run Code Online (Sandbox Code Playgroud)

这是可行的,但是在进行“ inexact重命名检测”时,挑选樱桃的时间越来越长。

我的预感是,这样可以更快

git format-patch -k -1 --stdout tags/myfix | git am -3 -k
Run Code Online (Sandbox Code Playgroud)

实际上,事实证明,该解决方案可立即应用该修复程序,使我的分支处于与选择樱桃完全相同的状态。

现在我的问题是,摘樱桃到底有什么不同?我以为摘樱桃基本上就是这样实现的,但我一定误会了。

git git-patch git-cherry-pick git-am

6
推荐指数
2
解决办法
844
查看次数