我正和git的一所大学一起工作。
我在一个分支机构工作,他正在为主人工作。
我已经做了一些与我的分支上的文件相关的工作,我决定给他发一个补丁文件。
我用git format-patch
创建了补丁,并将其发送给了他。
当他尝试使用git am
应用补丁时,他收到以下消息:previous release directory
这可能是因为补丁来自不同的分支。
他有没有办法在主分支上使用补丁?
注意:我正在使用git am
而不是git apply
来保留为jetty生成的commit-id。
我仍然希望委托人能够成为他本地存储库。
答案 0 :(得分:1)
在处理patches that fails to apply properly时考虑使用两种解决方案中的一种:
(来自bugdromer的文章):
处理它的最简单方法是:
git am --abort
,- 通过
手动应用修补程序patch -p1 < PATCH
,- 手动解决冲突,
- 最后提交
git commit -a
。但是在这种情况下你必须重写提交消息,这不是很好。有一种更聪明的方式。
您可以找到存储在
.git/rebase-apply
中的相应补丁文件,并命名为“0001
”(最近存储补丁的目录名称已更改,使用1.7.4.1进行测试)。
此时:
- 您可以使用
git apply
来应用补丁,这是补丁命令的git等同物,- 以通常的方式修复冲突文件(检查
.rej
文件,将它们与冲突文件进行比较,最后将固定文件添加到索引中):示例:
$ git apply PATCH --reject
$ edit edit edit
$ git add FIXED_FILES
$ git am --resolved
你完成了!
换句话说,由于git am
未更改索引,因此您需要
git apply --reject
补丁(存储在.git/rebase-apply
),- 手动修复冲突,
- 添加已更改的文件和
- 最后告诉git你解决了麻烦。
这种情况的优点是:
- 您无需重新编辑提交消息,
- 如果您正在应用一组修补程序(即您正在使用
git am PATCHES
,其中PATCHES
是邮箱),则不必git abort
并再次run git am
。
答案 1 :(得分:0)
尝试--3way
的{{1}}选项:
git am