.gitattributes 合并我们的 trow 合并冲突
.gitattribute merge ours trow merge conflict
我有分支 master
和 develop
。
master
分支包含:
- dist/app.js
- dist/app.polyfill.js
develop
分支包含:
- dist/app.js
.gitattributes
文件包含:
dist/* merge=ours
$ git config merge.ours.driver true
- 使用
当我尝试将 master
合并到 develop
时 dist/app.js 合并时没有冲突,但是 dist/app.polyfill.js合并错误.
我做错了什么?
合并错误
CONFLICT (modify/delete): dist/app.polyfill.js 在HEAD中删除,在682c04bb6342e545f70a5e936413904a0d57156b中修改。 dist/app.polyfill.js 的版本 682c04bb6342e545f70a5e936413904a0d57156b 留在树中。
自动合并 dist/app.js
自动合并失败;修复冲突,然后提交结果。
首先,这不是有效的合并驱动程序配置。合并驱动程序配置应该采用具有百分比模式的多个参数,并在 %A
指定的文件中产生结果。你的不会那样做;它完全有效(如果有效)纯属运气。
您在这里看到的另一个问题是您的驱动程序仅影响 Git 在需要执行 file-level 合并时所做的事情,而不影响某些其他类型的冲突,例如modify/delete 冲突已处理。来自 gitattributes(7)
手册页(强调我的):
The attribute merge
affects how three versions of a file are merged when a file-level merge is necessary during git merge, and other commands such as git revert and git cherry-pick.
在这种情况下,您有冲突,因为一方修改了文件而另一方删除了文件。 Git 确定不需要发生 file-level 合并,因为 modify/delete 情况总是冲突,所以它没有调用您的驱动程序,只是放弃了。请注意,删除的文件与空文件有质的区别;后者会合并,前者不会。
根据您的目录名称,听起来您可能正在存储库中存储构建工件。如果是这样,通常不鼓励这样做,因为正如您所注意到的,它们不能很好地合并,而且它们往往会使存储库膨胀。您最好使用工件服务器,例如 Artifactory,或者如果它存储在 GitHub 上,则发布资产作为 GitHub 发布的一部分。
我有分支 master
和 develop
。
master
分支包含:
- dist/app.js
- dist/app.polyfill.js
develop
分支包含:
- dist/app.js
.gitattributes
文件包含:
dist/* merge=ours
$ git config merge.ours.driver true
- 使用
当我尝试将 master
合并到 develop
时 dist/app.js 合并时没有冲突,但是 dist/app.polyfill.js合并错误.
我做错了什么?
合并错误
CONFLICT (modify/delete): dist/app.polyfill.js 在HEAD中删除,在682c04bb6342e545f70a5e936413904a0d57156b中修改。 dist/app.polyfill.js 的版本 682c04bb6342e545f70a5e936413904a0d57156b 留在树中。 自动合并 dist/app.js 自动合并失败;修复冲突,然后提交结果。
首先,这不是有效的合并驱动程序配置。合并驱动程序配置应该采用具有百分比模式的多个参数,并在 %A
指定的文件中产生结果。你的不会那样做;它完全有效(如果有效)纯属运气。
您在这里看到的另一个问题是您的驱动程序仅影响 Git 在需要执行 file-level 合并时所做的事情,而不影响某些其他类型的冲突,例如modify/delete 冲突已处理。来自 gitattributes(7)
手册页(强调我的):
The attribute
merge
affects how three versions of a file are merged when a file-level merge is necessary during git merge, and other commands such as git revert and git cherry-pick.
在这种情况下,您有冲突,因为一方修改了文件而另一方删除了文件。 Git 确定不需要发生 file-level 合并,因为 modify/delete 情况总是冲突,所以它没有调用您的驱动程序,只是放弃了。请注意,删除的文件与空文件有质的区别;后者会合并,前者不会。
根据您的目录名称,听起来您可能正在存储库中存储构建工件。如果是这样,通常不鼓励这样做,因为正如您所注意到的,它们不能很好地合并,而且它们往往会使存储库膨胀。您最好使用工件服务器,例如 Artifactory,或者如果它存储在 GitHub 上,则发布资产作为 GitHub 发布的一部分。