【发布时间】:2010-06-23 07:07:57
【问题描述】:
由于我的代码的方式,我正在尝试让 git 允许我进行非常手动的合并(长话短说,它是 explained here)。我几乎按照我想要的方式得到了它,只是在特定情况下缺少了一些东西。不应该太难:
我有自定义驱动程序,可以将 WinMerge 与c:/wm/winmerge.exe $1 $2 $3(进入 c:/wm/wmrg.sh)、git config merge.mnl.driver = "c:/wm/wmrg.sh %B %A %A" 和 echo *.xml merge=mnl > $GIT_DIR/info/attirbutes 之类的东西一起使用。
现在当我git merge dev 时,它会打开 WinMerge 并让我做这项工作 - 太棒了。它只是在以下情况下不起作用:
让我的两个分支(master 和 dev)提交,并在 dev 中等待一些更改合并到生产中。
- 返回
master - 重命名
dev中与更改无关的一些文件(比如说,一些 readme.txt 到 manual.txt)并提交 - 转到
dev并合并来自master的这些更改 [ 新驱动程序启动并询问您是否应该将这些配置传递给dev中的其他文件。您退出 WinMerge 而不保存,因此不会迁移信息。完成查看 XML 后,txt 不会被过滤并在 dev ] 中重命名 - 现在回到
master,合并dev
在这里,我希望驱动程序再次启动并且对 XML 的行为相同。但由于某种原因,当您尝试 git merge dev 时,它决定自动合并所有内容!
是否有任何类型的“每个分支”配置让我来到这里?也许在 git 意识到我在最后一次合并后没有做任何更改之后,它只能在某个方向上覆盖文件.. 甚至,使用的合并类型是基于一些“较新旧”的规则,这些规则认为这种情况是“微不足道的”和决定应保留哪个文件,无论其内容...
请指教..
谢谢
【问题讨论】:
-
我还没有设法避免 GIT 聪明,但我设法使用
cherry-pick将名称更改应用到我的 dev 分支,而不会遭受自动合并。