实验思路:起点,master 分支 dev 分支的 ABC 文件完全一样,后续 dev 分支只修改 A 文件,其他文件不懂。master 分支,只修改 C 文件,增加 D 文件,其他文件不变。造成“没有任何一个文件是两个分支共同修改”的局面。同时两个分支的 A 文件和 C 文件又是有差别的!
实验过程如下: 1 、在工作区创建 ABC 三个 txt 文件。git add . git commit 使的 master 有第一个 commit
2 、git checkout -b dev 复制 master 分支到 dev 分支。此时两个分支内容相同
3 、停留在 dev 分支,修改 A 文件。然后 add commit ,使得 dev 分支有别 master 分支
4 、跳回 master 分支 修改 C 文件 ,然后 add commit ,使的 master 分支有别于 dev 分支,且分叉
5 、在 mster 分支,增加 D 文件。然后 add commit ,使的 master 分支领先 dev 分支两个版本 此时,master 分支的 A 文件和 dev 分支的 A 文件是不同的版本,两者有区别。但是这两个分支并没有共同修改过同一个文件。dev 分支只修改 A 文件。master 分支只修改 C 文件,增加 D 文件。
6 、跳到 dev 分支。然后 git rebase 。结果在两个分支 AC 文件有差异的情况下没有任何冲突警告! 我停留在 dev 分支。 在工作区,我打开 A 文件查看。发现是 dev 修改后的 A 文件。我打开 C 文件,发现是 master 修改后的 C 文件。D 文件也在。(我觉得这个结果是不正常的! git 为什么不询问用户就在 A 文件中“继承了”dev 分支的版本。同样的,为什么不询问用户就直接“继承”了 master 分支修改后的 C 文件?)
我跳回 master 分支。在工作区,我打开 A 文件查看。发现是 master 的老版本 A 文件。C 文件是 master 修改后的 C 文件。D 文件也在 (我觉得这个结果是正常的)
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.