git - 将文件移动到主文件夹中。现在分支有合并冲突
问题描述
我们的项目文件太多。所以在主分支上,我将文件移动到文件夹中,现在看起来很干净。但是,当我将 master 合并到所有其他分支中时(因此它们具有最新更新),它们存在合并冲突,我不明白它们的含义或如何解决它们。
在master中,文件被移动了。在分支中,这些文件可能有很多修改。
如何在保留每个人的更改的同时将 master 合并到不同的分支中?
这是 Github 桌面允许我做的事情,但我不知道这些选项是什么意思:
解决方案
您似乎认为文件的移动是 git 中的“事物”,并且您合并到的分支将以某种方式神奇地“获取”此移动作为功能,而不会发生任何其他事情,或者将其“折叠”成任何东西其他的已经发生了。那不是真的;那不是git。Git 从单个文件的角度来考虑,单个文件是一个单一的路径。
所以file.txt是一个文件。如果将其移动到folder/file.txt,那是一个不同的文件。Git 看到一个文件消失并出现一个新文件。如果情况足够简单, Git 会尝试将这两个文件相互连接,但不能保证。即使它这样做了,它也不认为这是一个“举动”;它认为它是一个重命名。
所以我想像这样的事情发生了:
on master:
file file.txt moved to [was renamed as] myfolder/file.txt
on branch:
file file.txt modified in place
所以,这是一个冲突。一个分支重命名了文件,另一个分支修改了文件。Git 不知道你想做什么,所以它留给你。
但是您也没有简单可行的前进方式。你做了一件坏事。你想要这两件事中的哪一个,重命名还是修改?两者都不!您希望file.txt in中的文件内容,但您希望它们位于“相同”文件所在的位置,即myfolder/file.txt。耶!branch
master
你打算如何解决这个烂摊子?最简单的方法是退出合并并重新开始。您有两个主要选择:
在分支上做你的重新安排工作。换句话说,打电话给团队中的每个人说,“嘿,每个人,在你正在处理的任何分支中,进行一次提交,将file.txt移动到myfolder/file.txt,然后再进行一次提交。” 如果每个人都做同样的事情,它就会成功地合并到master中。
完全推迟重排。打电话给每个人说:“大家好,当你完成这个分支时,停止工作,直到每个人都合并。” 等到每个人都合并了,然后重新排列。现在每个人都可以拉大师,工作可以从新的分支重新开始。
推荐阅读
- r - arulesViz 下标越界 paracoord
- excel - 安装程序中的 dll 是否只能在一个系统上运行?
- typescript - Typescirpt 映射在 redux reducer factory 类型中的类型问题
- r - 具有 13 个独立协变量的 Cox 模型上的偏差残差诊断 - 任何方式我都可以获得每个协变量的图?
- python - 我有一个输入文件,我正在尝试从中构建字典
- python - 如何将 python 脚本加载到内存中并像命令行一样执行它?
- opencv - sklearn/opencv 库中的 PCA 转换/项目函数是否保留原始数据集的顺序?
- java - 按日期排序对象列表并应用过滤器
- django - 如何在表单集中显示/隐藏表单中的选定字段?
- gps - 根据预定间隔在两个 GPS 点之间插入附加点