【问题标题】:In GIT how to merge a development branch into master branch by completely overriding the master branch?在 GIT 中,如何通过完全覆盖主分支将开发分支合并到主分支?
【发布时间】:2016-08-09 13:32:51
【问题描述】:

我的主副本在 2 年前检查了以前的文件。我的开发分支是最新的。所以我想用开发分支更新我的主分支。

我试过了 git结账大师 git merge -X 他们的开发者

但它给出了一个错误“可以我们无法合并的东西”

当我尝试创建一个新的拉取请求时,在 Git 网络中,它显示如下“没有可比较的东西。 master 和 master-clean 是完全不同的提交历史。”

你是说起源/发展吗?

【问题讨论】:

  • 只需git checkout master 分支然后运行git merge development ?
  • 不,这不是他想要的。他想扔掉旧的master,用现在的development重新开始。
  • @AnoE 这很神秘,读完“...我想用开发分支更新我的主分支。” 我以为他只是想在他的之上合并大师
  • 没错,这个问题可以从一些拼写/改写改进中受益。我在这里挂着“2 岁的主人”(我猜这又是我的一种解释)。

标签: git github merge


【解决方案1】:

所以,从你所有的 cmets 和你的 OP 那里收集信息,你就会遇到这种情况:

  • 一个远程 (github) 存储库,有一个 2 年未使用的 master 分支和一个当前的 development 分支。让我们将此存储库称为origin
  • 您想完全摆脱远程master 并用development 分支替换它。
  • 我假设您的本地工作存储库是最新的 origin,即您最近已提交您在 development 中更改的所有内容。

所以我建议这个程序:

git checkout development ; git pull        # just in case
git branch master development -f
git checkout master
git push origin master -f

这将:

  • 将本地development 分支与远程分支同步,以防万一。在此操作之后,它们应该完全相同。 git status 应该清楚地告诉你。
  • 然后将master 设置为在本地指向与development 相同的提交。
  • 然后您结帐并将master 推送到遥控器,覆盖之前的内容。

在此之后,developmentmasterorigin/developmentorigin/master 都指向同一个提交,这就是你之前的 development

【讨论】:

  • 感谢您的解决方案!正是我想要的。 +1!
【解决方案2】:

您可以完全删除您的主分支:git branch -D master

然后从您的开发分支重新创建它:git checkout -b master development

【讨论】:

  • “git checkout -b master development”有什么作用?
  • 那我怎样才能在合并之前恢复到 master 分支的最新提交?
  • git checkout -b master development 按照 Marc-Alexandre 所说的去做;它从另一个创建一个分支。详情见git help checkout
  • Haresh,我不确定我是否理解您的要求?如果 master 不是最新的,我的建议是简单地删除它并从开发分支重新启动它。
  • 当我尝试使用“git branch -D master”删除主分支时,会出现错误提示“错误:找不到分支'master'。”
【解决方案3】:

折腾当前master并使用dev分支?

git push origin dev:master --force

这将用开发分支覆盖远程上的 master 分支...

你为什么要这样做 - 这会破坏代码库中工作的所有其他人。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-14
    • 2021-11-13
    • 2021-01-29
    • 2017-02-26
    • 1970-01-01
    相关资源
    最近更新 更多