git am从分支到主人

时间:2012-12-02 12:01:46

标签: git version-control

我正和git的一所大学一起工作。 我在一个分支机构工作,他正在为主人工作。 我已经做了一些与我的分支上的文件相关的工作,我决定给他发一个补丁文件。 我用git format-patch创建了补丁,并将其发送给了他。 当他尝试使用git am应用补丁时,他收到以下消息:previous release directory

这可能是因为补丁来自不同的分支。

他有没有办法在主分支上使用补丁?

注意:我正在使用git am而不是git apply来保留为jetty生成的commit-id。 我仍然希望委托人能够成为他本地存储库。

2 个答案:

答案 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