我正在使用Git来跟踪我的文档乳胶来源。我想让master分支中包含适合最终用户发布的文档,所以当有人需要时,我可以切换到master分支,编译并分发文档。
当手册需要重大更新时,我会创建新分支。但是,当手册获得批准后,它需要合并回主人手中。当从分支合并到 master 时,我想将一些命令传递给Git说:“忘记合并,只需使用分支中的文件覆盖 master 中的文件。“有没有办法做到这一点?具体来说,我想避免每次都打开合并工具。提前谢谢。
答案 0 :(得分:56)
忽略master
,当您branch
签出时:
git merge master --strategy=ours
http://schacon.github.com/git/git-merge.html
正如'计算机语言学家'在这里评论的那样,这将“忽略来自'master'的所有内容,即使它已经更改为新的独立文件”。因此,如果你不是OP,并希望更安全的合并,而不是OP说“忘记合并”,那么请使用“计算机语言学家”中的这个出色的安全命令,加上他的评论,这样他就可以获得信誉。
git merge -s recursive -X theirs branch
答案 1 :(得分:15)
在Git的1.7.1版本中,您可以使用“-Xtheirs”在分支本身中进行合并。
例如,如果您从主分支开始, 从主人开始
git checkout -b editBranch
-- edit your files --
git add .
git commit -m "Updated the files"
git checkout master
git merge -Xtheirs editBranch
我看到基于this post执行此操作的另一种方法是对editBranch进行硬重置。例如:
git checkout -b editBranch
-- edit your files --
git add .
git commit -m "Updated the files"
git checkout master
git reset --hard editBranch
我认为第二种方式可能是更好的发挥,但我还没有机会充分利用它。
答案 2 :(得分:2)
我相信你可以用'我们'的合并策略做到这一点:
git checkout branch
git merge -s ours master
但这并不能完全符合您的要求:它会覆盖当前工作分支branch
的内容,您想要的是将相同的内容传递到{{1} }。你真正想要的是一个合并策略master
,为此,我指出你this similar question的方法来做到这一点。在实践中,它归结为将theirs
重置为master
。