我们最近从 SVN -> Git (using Stash) 迁移。迁移之后,我们开始在合并期间看到一些开发人员在他们的特性分支上搞砸了合并的问题。
**Our workflow model:-**
master 1---2----3------------4----5
| | | | | |
| | M | | |
feature1 | a--------b--- | |
| M |
feature2 c-----------------d-------
在上图中,假设 developer1 有一个功能分支 feature1 ,已经完成了他的更改并合并回开发。
Developer2 有一个在 developer1 的分支之前创建的分支,但会存在更长的时间。更改完成后,他将更改从 master 拉入他的分支,解决任何冲突,然后重新合并。
问题是,当 developer2 将更改合并到他的本地分支时,他正在通过首选自己的文件来解决合并冲突。但是,这实际上是覆盖 了一些他没有更改的文件。当他创建拉取请求并合并回 master 时,他有效地将 developer1 的更改回滚到以前的版本。我们可以取消它,因为文件实际上回滚到上一个提交 (SHA) id
问题是,
- 有没有办法我们可以系统地避免这种情况,即要求 git 拒绝对 master 的任何更改,其中更改 SHA id 实际上是回滚。
- 当开发人员仅在他们已更改的文件上发生冲突时,合并期间有没有办法
我的谷歌搜索让我看到了一些文章,这些文章建议使用 --rebase 选项执行 git pull 或更改 master 分支的权限,以便它们只允许快进合并。任何一个选项都会有帮助。