如何使一个远程分支与另一个分支相同

时间:2018-10-09 15:13:47

标签: git git-branch

在原点上,我有2个分支:masterdevelopment

masterdevelopment之前先进行几次提交,在后面再进行一些提交。

我希望master分支的树与development分支的树相同(实际上是在谈论修订的树对象,而不是历史)。如果我在master分支上丢失了任何内容,那很好,但是development分支应该完好无损。

这样做的原因是,我们有一个工作流,我们可以在development上工作,并在准备发布时合并到master。随着时间的流逝,已经有一些对master的直接提交。我们希望使masterdevelopment保持同步。

能否请您分享如何实现?我认为可行的一种方法是将master合并到development,然后将提交从development中的合并还原,然后将development合并到master

编辑:我不能强行推动。我需要创建一个拉取请求以进行任何更改。

2 个答案:

答案 0 :(得分:1)

只需将开发推送到远程主服务器(即使使用-f来强制它):

git push -f origin develop:master

调整遥控器的名称。

另一个骇人听闻的建议

如果您想让母版看起来像用最少的工作量开发PR一样,这就是您想要做的:

git cat-file -p origin/develop # find the ID of the _tree_ of this revision
git commit-tree -p origin/master -m "Tree of master is now just like develop" id-of-tree-of-last-command # create a new revision with the same tree of develop... this will generate one ID
git checkout -b some-development use-id-printed-by-commit-tree
git push some-remote some-development

现在,您可以通过某些开发来创建PR。...如果您希望开发成为该修订版的父版本,请将其作为另一个-p参数添加到commit-tree。 / p>

答案 1 :(得分:0)

您遇到的是我们所有人都遇到的标准Git开发问题,因此已经创建了分支方法。一些分支策略比其他分支策略更受欢迎。最受欢迎的3种是:

  1. GitFlow(看起来很需要):https://nvie.com/posts/a-successful-git-branching-model/

  2. GitHub流:https://guides.github.com/introduction/flow/index.html

我将快速描述如何解决您的问题:

  1. 在“ develop”分支中,从“ master”进行拉取。解决“开发”分支中的所有合并冲突,然后提交并推送到“开发”分支。”
  2. 从“ develop”分支进行构建,并确保所有内容都能构建并粘贴任何单元测试(如果有)。
  3. 完成一个拉取请求,以将您的代码放入“ master”分支,现在您的“ master”分支和“ develop”分支现已同步。

这是解决您今后遇到的问题的方法:

  1. 在'develop'分支从事开发工作
  2. 在“功能”分支中执行功能。创建提取请求以将代码从“功能”分支获取到“开发”分支。
  3. 从“ develop”合并到“ release”分支,并从“ release”分支构建软件包并部署到测试环境。
  4. 您的测试是否建立在“发布”分支中,而测试修订是否在同一“发布”分支中。
  5. 部署到生产环境后,然后将代码合并到“ master”分支中,并且不要触摸它。这是我们的黄金生产代码。
  6. 如果出现生产问题,请从“ master”分支分支到一个名为“ hotfix”的新分支,并从此处进行提交和构建,然后部署到Production中以进行紧急修复。
  7. 完成后,将修订合并到“ master”分支,然后是“ release”和“ develop”分支。各个开发人员准备就绪后,会将修补程序吸收到其“功能”分支中。
  8. 我跳过了很多事情,但是我达到了上面提到的称为“ GitFlow”的分支方法的最高点。这是一个缓慢的过程,会使您故意放慢速度。您不必遵循此过程,也可以根据需要修改此过程。这是一个更大的话题,您可以花数小时阅读。祝你好运。