我们的项目中包含以下分支:
我们使用诸如feature / myfeature-123之类的分支来开发新功能。如果完成,我们会将它们合并到母版中。 一段时间后,当完成足够的功能并将其成功合并到master后,我们便将项目部署到试生产阶段。为此,我们需要将最新的更改合并到试生产分支中。
注意:在此之前,生产前分支没有任何更改
这是我们的问题: 我们面临许多合并冲突。然后我想,好的。让我们手动修复它。 我做了以下事情:
git pull origin master
将当前状态从master
转移到此分支。如上所述,我们面临许多合并冲突。由于我们在预生产分支中没有进行任何更改,因此我想接受在master分支中进行的所有更改。这应该可以解决所有冲突。
此操作成功,但在master分支中,我们删除了预生产分支中的几个文件/行。我本来希望这些删除的文件/删除的行也将应用于预生产分支。但是事实并非如此。他们留在试生产部门。有什么想法可以解决这个问题吗?
我不是这方面的最大专家。我对Git有一个大致的了解,但是我仍然害怕通过执行错误的命令来破坏事物。我以为rebase
是否可以在这里提供帮助,但我不知道。
非常感谢您能提供的任何帮助。
答案 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推送它。