Git / Gitlab流程工作流

时间:2019-04-03 11:56:38

标签: git gitlab git-flow

我们的项目中包含以下分支:

  • 主人
  • 预生产
  • 生产

我们使用诸如feature / myfeature-123之类的分支来开发新功能。如果完成,我们会将它们合并到母版中。 一段时间后,当完成足够的功能并将其成功合并到master后,我们便将项目部署到试生产阶段。为此,我们需要将最新的更改合并到试生产分支中。

注意:在此之前,生产前分支没有任何更改

这是我们的问题: 我们面临许多合并冲突。然后我想,好的。让我们手动修复它。 我做了以下事情:

  1. 结帐试生产
  2. (为了安全起见)拉出该分支的最新更改(没有)
  3. 从我当前所在的分支创建一个新分支。名称:deploying-april2019
  4. 切换到这个新分支
  5. git pull origin master将当前状态从master转移到此分支。

如上所述,我们面临许多合并冲突。由于我们在预生产分支中没有进行任何更改,因此我想接受在master分支中进行的所有更改。这应该可以解决所有冲突。

此操作成功,在master分支中,我们删除了预生产分支中的几个文件/行。我本来希望这些删除的文件/删除的行也将应用于预生产分支。但是事实并非如此。他们留在试生产部门。有什么想法可以解决这个问题吗?

我不是这方面的最大专家。我对Git有一个大致的了解,但是我仍然害怕通过执行错误的命令来破坏事物。我以为rebase是否可以在这里提供帮助,但我不知道。

非常感谢您能提供的任何帮助。

2 个答案:

答案 0 :(得分:0)

如果您确定,那位大师是真理的源头,有点像fast-forward(!)。 您可以在接受师父的同时合并。 然后可以通过作业f在詹金斯/特拉维斯/ CI中。

将-X选项添加到他们的选项中。例如:

git fetch --all  --prune
git checkout preproduction
git merge -X theirs origin master

一切都会以所需的方式合并。

Is there a "theirs" version of "git merge -s ours"?

这种方法的优点是,您仍然可以保留提交历史记录。

答案 1 :(得分:0)

最好将preproduction带回master进行跟踪。您可以执行以下操作:

git log --oneline master..preproduction

仅列出预生产阶段的9个提交。

然后,将preproduction重置为master

git checkout preproduction
git reset --hard master

最后,将您感兴趣的以上列出的9个提交中的任何一个重新添加到预生产中:

git cherry-pick <commit-hash>

然后您将不得不强制退回preproduction,因为它会与原点分开。

这将使其与master保持一致。不过,理想情况下,您只希望不提交preproduction,因为将来可以很容易地使用最新的master推送它。