Changelog的自定义git合并联合策略

kra*_*mer 8 git changelog

我们有一个ONGOING.md文件,每个开发人员在推送代码时添加项目.
看起来像 :

### Added
- item 1

### Changed
- item 2
Run Code Online (Sandbox Code Playgroud)

当拉/推代码时,所有行都被覆盖,所以我.gitattributes在repo root 添加了一个文件:

ONGOING.md -text merge=union
Run Code Online (Sandbox Code Playgroud)

我希望在此之后保留每个书面行,但事实并非如此,覆盖仍然发生.

处理这个问题的正确方法是什么?

编辑:

好的,它刚刚发生,所以我复制/粘贴我的终端的内容:

$ more fab/hotfix/ONGOING.md 
### Added

$ nano fab/hotfix/ONGOING.md; git commit fab/hotfix/ONGOING.md -m "update ongoing"

$ more fab/hotfix/ONGOING.md 
### Added
- add slug column to BO fack topic  admin  page

$ git pull
remote: Enumerating objects: 14, done.
remote: Counting objects: 100% (14/14), done.
remote: Compressing objects: 100% (13/13), done.
remote: Total 14 (delta 1), reused 0 (delta 0)
Unpacking objects: 100% (14/14), done.
From gitlab.com:kraymer/website
   a740fe8a0..12d531e8d  hotfix              -> origin/hotfix
First, rewinding head to replay your work on top of it...
Applying: add slug column to BO fack topic  admin  page
Using index info to reconstruct a base tree...
M   fab/hotfix/ONGOING.md
Falling back to patching base and 3-way merge...

$ more fab/hotfix/ONGOING.md 
### Added
- shared task for old notifications to be deleted
Run Code Online (Sandbox Code Playgroud)

我认为句子"回到修补基础和3路合并......"意味着git解决了冲突,所以合并驱动程序应该发挥作用,不是吗?

EDIT2:

所以引用@VonC:

但是如果3路合并完成而没有冲突......没有调用合并驱动程序.

所以,我想喜欢我的问题可以改写:我该怎么配置的git所以3路合并上ONGOING.md有冲突结束时2名开发人员编辑同一个部分(如### Added在我前面的例子),使得合并司机进场?

如果我们在Edit1中重新考虑我的例子,我不知道git最终会如何获取另一个开发行而不是我或两者.

Von*_*onC 6

在合并冲突的情况下调用合并驱动程序

如果覆盖仍在发生,请检查开发人员是否在某个时候没有做 a push --force,用他们自己的覆盖远程历史记录。
或者,如果他们以某种方式忽略了拉取的更改(通过从他们的 IDE 保存他们的本地副本,覆盖刚刚拉取的内容)

确保他们有:

git config --global pull.rebase=true
git config --global rebase.autostash=true
Run Code Online (Sandbox Code Playgroud)

这将迫使他们执行 的本地解决方案ONGOING.md,在从远程拉出的提交之上重放他们自己的提交。


我认为“回退到修补基础和 3 路合并...”这句话意味着 git 解决了冲突,所以合并驱动程序应该发挥作用,不是吗?

不:这只是意味着它需要共同的祖先来进行合并。
如果该公共祖先显示正在修改/合并的公共行,那么是的,将发生冲突,并且将调用合并驱动程序。
但是,如果3 路合并在没有冲突的情况下完成……则不会调用合并驱动程序。