【发布时间】:2017-10-27 23:41:08
【问题描述】:
考虑以下git网络和流程:
feature-foo _._._2_._._
/ \
master __1__/__._.3____._._\___4__5_________7_ (now: 1.1.0-SNAPSHOT)
\
release-1.0.x \___.__._._.__6__._._.____ (now: 1.0.1-SNAPSHOT)
随着时间的推移采取以下行动:
- 将
master的版本更新为1.0.0-SNAPSHOT - 在
feature-foo分支中删除A.java - 分支
release-1.0.x,将master的版本升级为1.1.0-SNAPSHOT以进行下一个版本开发 -
B.java仅在master上修改为B'.java - 手动将
release-1.0.x合并回master(git merge不是通过 GitLab MR) - 将
release-1.0.x的版本添加到1.0.0并标记它并再次添加到1.0.1-SNAPSHOT - 第二次尝试将
release-1.0.x合并回master与发布分支上的最新更改失败
和
-
3和6是通过/tmp上的 bash 脚本完成的,带有完整的git clone -
5和7是在单独的/path/to/tmp上手动完成的,完整的git clone -
feature-foo被合并回master(接受MR) -
master1有A.java -
release-1.0.x仍然有A.java(这很好) -
release-1.0.x仍然有B.java(这很好) - 一些文件被合并回
5不包括A.java和B.java
对于5 和7 这两个步骤我都做了
git clone ...
git checkout release-1.0.x
git checkout master
git merge --no-ff --no-commit release-1.0.x
successfully on 5:
git add .
git commit
git push
奇怪的是,现在在第二次尝试时,我遇到了很多冲突,包括 both A.java(它试图将其转移给 master)和 B.java(它试图合并过时的将分支释放到 master 并产生冲突)。
我的问题是:
- 我在这里遗漏了什么(很明显)吗?
- 将长期发布分支合并回 master 的过程是否正确(例如每月两次)?
- 为什么我现在就遇到冲突而不是第一次尝试?
编辑
版本被添加到pom.xmls 中,这些版本已添加到.gitattributes 中,以使用我们的策略进行处理。
【问题讨论】:
-
--no-commit在提交之前中止合并,这意味着如果您之后不手动调用git commit,则不会发生合并。相反,您最终会在合并过程中进行大量未提交的更改。如果您离开它们,这些将导致各种问题。你在 5 点之后还做了什么你没有提到的事情吗? -
@oyvind 是的,仅在 5 上我确实做到了,我在 7 上没有达到提交的地步。我会更新问题。
-
或者更确切地说,6 和 5 发生在同一个克隆上吗?还是 6 在其他地方完成?
-
@oyvind 更新了问题。 3 和 6 是
/tmp中各个文件夹上的纯克隆
标签: git merge git-merge git-merge-conflict