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

Posted

技术标签:

【中文标题】Git:合并到主文件,同时自动选择用分支覆盖主文件【英文标题】:Git: Merge to master while automatically choosing to overwrite master files with branch 【发布时间】:2010-11-20 16:16:20 【问题描述】:

我正在使用 Git 来跟踪我的文档 Latex 源。我想让主分支充满适合最终用户发布的文档,所以当有人需要什么时,我可以切换到主分支,编译并分发文档。

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

【问题讨论】:

您可以进行交互式合并并用勺子喂它(使用yes),无论答案是什么,当它询问要做什么时...... @r-martinho-fernandes:交互式合并命令是什么? 【参考方案1】:

忽略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

【讨论】:

如果您在分支中并且您 git merge master --strategy=ours 那么它会保留分支的更改。 (OP想要什么)但是如果你是主人并使用“我们的”,那么它会保留主人的。 (对面) 从我对问题的阅读来看,Mica 想将分支合并到 master,保持分支的状态,即 git merge branch 到 master,所以 --strategy=ours 与他想要的相反跨度> 从分支 'master',运行 git merge -s recursive -X theirs branch 将通过选择 'branch' 版本解决所有冲突。使用 -s ours 将忽略来自 'master' 的所有内容,即使它对新的独立文件进行了更改。 OP 想要将合并目标定位到 master,但 @Robert 的答案目标定位到 branch 这个答案让我很困惑。该命令正在做相反的事情。【参考方案2】:

在 Git 1.7.1 版本中,您可以使用“-Xtheirs”来合并分支本身。

例如,如果您从 master 分支开始, 从master开始

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

我认为第二种方式可能会更好,但我还没有足够的机会玩弄它。

【讨论】:

谢谢。我必须在家里更新 git,然后检查一下。非常感谢。【参考方案3】:

我相信您可以使用“我们的”合并策略来做到这一点:

git checkout branch
git merge -s ours master

但这并不完全符合您的要求:它覆盖了 current 工作分支 branch 的内容,而您想要的是将相同的内容放到 master 上。你真正想要的是一个合并策略theirs,为此我向你指出this similar question 的方法。实际上,归结为将master 重置为指向branch

【讨论】:

以上是关于Git:合并到主文件,同时自动选择用分支覆盖主文件的主要内容,如果未能解决你的问题,请参考以下文章

git---怎样将分支上的一个单文件合并到主分支上(master)

git分支的创建与合并

把自己分支的内容合并到主分支上

Git 在将两个分支合并到主(主)分支之前将一个开发人员分支合并到另一个开发人员分支

git合并代码到主分支

Git:如何使用 VS Code 源代码控制将功能分支合并到主分支?