gpt4 book ai didi

git - 更改日志的自定义 git merge union 策略

转载 作者:太空狗 更新时间:2023-10-29 12:54:34 29 4
gpt4 key购买 nike

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

### Added
- item 1

### Changed
- item 2

在 pull/推送代码时总是会发生行被覆盖的情况,所以我在 repo root 中添加了一个 .gitattributes 文件:

ONGOING.md -text merge=union

我希望在那之后每一行都得到保留,但事实并非如此,覆盖仍然发生。

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

编辑:

好吧,这就发生了,所以我复制/粘贴了我终端的内容:

$ 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

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

编辑2:

所以引用@VonC:

But if the 3-way merge completes without conflicts... no merge driver called.

所以我想我的问题可以改写为:我如何配置 git,以便在 ONGOING.md 上进行 3 向 merge ,当 2 个开发人员编辑同一部分时(如 ### Added in my previous example),以便 merge 驱动程序发挥作用?

如果我们重新考虑我在 Edit1 中的示例,我不明白 git 如何最终选择其他开发行而不是我的或两者。

最佳答案

Merge drivers在发生 merge 冲突时调用。

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

确保他们有:

git config --global pull.rebase=true
git config --global rebase.autostash=true

这将迫使他们对 ONGOING.md 进行本地解析,在从远程 pull 的提交之上重播他们自己的提交。


I thought the sentence "Falling back to patching base and 3-way merge..." meant git resolved a conflict, so the merge driver should come into play, no?

不:这只是意味着它需要共同的祖先来进行 merge 。
如果该共同祖先显示正在修改/merge 的共同行,那么是的,将发生冲突,并且将调用 merge 驱动程序。
但是如果 3-way merge 无冲突地完成...没有调用 merge 驱动程序。

关于git - 更改日志的自定义 git merge union 策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52182834/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com