当我的一个分支删除了我希望保持删除状态的文件时,将2个分支合并为master的最佳方法是什么?

问题描述

我是git的新手,并且想了解在以下情况下会发生什么。我有以下分支机构:

  1. Master Branch(当前部署到Prod)
  2. 增强功能1-CleanupUntrackedFiles分支:它从Master产生。我对gitignore文件进行了更新,使其不包含特定的扩展名,并且从存储库中删除了那些不必要的文件
  3. 增强#2:这也是由Master创建的。代码更新可支持客户请求。

在这一点上,我想将增强功能1和增强功能2都投入生产。与Master合并之前,将这两个分支合并在一起的最佳方法是吗?如果是这样,Git怎么会知道我希望从增强功能1中删除文件保持删除状态?自从从Master分支创建了#2增强功能以​​来,将2增强功能合并到1增强功能中的合并请求会再次引入那些旧文件吗?

预先感谢您的帮助。

解决方法

我怀疑您的问题有多种解决方案。这是我的建议:

  1. 创建母版副本

git checkout master && git checkout -b copyOfMaster

  1. 将您的分支合并到copyOfMaster中(根据您的意思,我将执行E#1,然后执行E#2)。观察合并的输出,以了解保留了哪些文件。

Git合并策略(您可能需要递归+我们的组合):https://git-scm.com/docs/git-merge#_merge_strategies

此步骤的优点在于,如果出现问题,由于您正在处理Master副本,因此只需删除该分支并尝试其他操作即可。

git merge e1 -s recursive -X theirs && git status

git merge e2 && git status

  1. 测试您的master分支,如果一切正常,并且所有文件都存在或需要删除,则将copyOfMaster合并到master中。

git checkout master && git merge copyOfMaster -s recursive -X theirs