Git:合并到master,同时自动选择用分支覆盖主文件

时间:2009-08-18 16:54:41

标签: git merge branch

我正在使用Git来跟踪我的文档乳胶来源。我想让master分支中包含适合最终用户发布的文档,所以当有人需要时,我可以切换到master分支,编译并分发文档。

当手册需要重大更新时,我会创建新分支。但是,当手册获得批准后,它需要合并回主人手中。当从分支合并到 master 时,我想将一些命令传递给Git说:“忘记合并,只需使用分支中的文件覆盖 master 中的文件。“有没有办法做到这一点?具体来说,我想避免每次都打开合并工具。提前谢谢。

3 个答案:

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