2

这里我做了什么:

  • 从 master 创建开发分支;
  • 修改了几个文件并提交;
  • 将开发分支合并到带有--no-commit参数的master;
  • git reset --hard在开发分支中修改的几个文件上运行。结果主分支只包含来自开发分支的几个对象——即我已经部分合并了开发更改;
  • 我已经在 master 中提交了更改;
  • 一段时间后,其他开发人员更新了主分支,为了更新我的开发分支,我将主分支合并到其中。

我已经准备好,在我之前的合并中我没有承诺掌握的我的开发对象将被来自 master 的文件覆盖。但是在输出中git log --follow dev-modified-file.txt我看不到覆盖我的开发更改的提交。

在我的开发分支上运行 git log --follow dev-modified-file.txt,我可以看到需要的提交以及开发修改。但是看不到提交恢复该更改(实际上无论如何都没有这样的提交)但是我的工作树包含dev-modified-file.txt文件的主版本,尽管有提交添加开发代码,但没有提交删除该代码。

为什么?

主分支的代码是如何潜入我的开发分支的,没有留下任何痕迹?

PS如果我的描述不清楚,请在评论中提问,我很乐意相应地解释和更正这篇文章。

编辑:将我的 master 合并到开发中后,我看不到 master 和 development 分支之间的区别(我省略的更改消失了!)而且我看不到在开发分支中提交负责!

我相信这可能与合并策略有关……但是如何?你看,我的登录开发分支是什么样子的:

  • 我添加了对文件的更改——工作文件夹中的文件包含这些更改。
  • 我已经将 master 分支合并到 development 中——许多提交来到了 development 分支,我编辑的文件在 master 分支中变得相等,尽管没有提交负责!

合并后我在文件中添加了更改,更改消失了,没有留下任何痕迹!

4

1 回答 1

1

git log <filename>由于在其默认模式下执行的历史简化,您很有可能没有看到您正在寻找的更改。这种简化对于查找删除内容git log <filename>的提交不是很有用。

尝试git log --follow --simplify-merges dev-modified-file.txt改用;这会更改历史简化算法,使其在简化您可能关心的更改方面不那么激进。如果历史记录足够短,并且您已经安装了 gitk,那么您可能只需浏览历史记录即可找到您要查找的内容:gitk --simplify-merges dev-modified-file.txt

于 2013-11-14T22:06:30.647 回答