【发布时间】:2012-08-03 12:32:18
【问题描述】:
我做了什么:
- 从 master 创建了开发分支;
- 修改了几个文件并提交;
- 使用
--no-commit参数将开发分支合并到master; - 在开发分支中修改的几个文件上运行
git reset --hard。结果主分支只包含开发分支中的几个对象——即我已经部分合并了开发更改; - 我已在 master 中提交更改;
- 一段时间后,其他开发人员更新了 master 分支,为了更新我的开发分支,我将 master 分支合并到其中。
我已经准备好,我在之前的合并中没有提交到 master 的开发对象将被 master 中的文件覆盖。但是在git log --follow dev-modified-file.txt 的输出中,我看不到覆盖我的开发更改的提交。
在我的开发分支上运行git log --follow dev-modified-file.txt,我可以看到需要的提交以及开发修改。但看不到提交恢复该更改(实际上没有这样的提交),但我的工作树包含dev-modified-file.txt 文件的主版本,尽管有提交添加开发代码,但没有提交删除该代码。
为什么?
主分支的代码是如何潜入我的开发分支的?
附:如果我的描述不清楚,请在 cmets 中提问,我将很乐意对此帖子进行解释和更正。
编辑: 将我的主分支合并到开发分支后,我看不到主分支和开发分支之间的区别(我省略的更改消失了!)并且我没有看到在开发分支中提交负责!
我相信这可能与合并策略有关...但是如何?你看,我登录开发分支的样子:
- 我已向文件添加更改 — 工作文件夹中的文件包含更改。
- 我已将 master 分支合并到开发分支中 - 大量提交来到了开发分支,我编辑的文件在 master 分支中变成了一个相同的文件,尽管没有提交负责!
我在合并后对文件添加了更改,这些更改消失了,没有留下任何痕迹!
【问题讨论】:
-
当您没有看到“没有提交删除该代码”或在开发分支上时,您现在在
master上? IE。是在master上看不到开发分支的合并更改,还是在开发分支上意外看到master的版本? -
在开发分支上。开发分支是引入所有更改的地方。在合并到 master 期间,我仅部分应用了这些更改。并且省略的更改仅在开发分支中。没关系,我没有在 master 上看到它们——我没有故意提交它们。但是在将我的 master 合并到 development 之后,我看不到 master 和 development 分支之间的区别(我省略的更改消失了!)而且我没有看到 commit 对此负责!
-
我敢打赌“将我的主人合并到开发中”提交。试试
git diff <merge_commit>~1 <merge_commit>,看看它做了什么改变。
标签: git version-control merge git-merge git-log