git log --follow filename不显示提交已更改该文件

时间:2012-08-06 14:08:50

标签: git version-control merge git-merge git-log

我在这做了什么:

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

我已经准备好了,我在上一次合并时未提交的开发对象将被master中的文件覆盖。但是在git log --follow dev-modified-file.txt的输出中,我看不到覆盖我的开发变更的提交。

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

为什么?

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

P.S。如果我的描述不清楚,请在评论中提出问题我将很乐意解释并相应地更正此帖子。

编辑:将我的主人合并到开发中后,我看不出主分支和开发分支之间的区别(我省略的更改已经消失了!)而且我没有看到commit在开发分支中负责!

我认为这可能与合并战略有关......但是如何?你看,我的登录开发分支是这样的:

  • 我添加了对文件的更改 - 工作文件夹中的文件包含更改。
  • 我已将master分支合并到开发中 - 很多提交来到开发分支,我编辑的文件在master分支中变得相同,尽管没有提交负责!

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

1 个答案:

答案 0 :(得分:0)

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

尝试使用git log --follow --simplify-merges dev-modified-file.txt代替;这会改变历史简化算法,使其在简化您可能关心的更改时不那么积极。如果历史记录足够短,并且您安装了gitk,则可以只浏览历史记录以查找您要查找的内容:gitk --simplify-merges dev-modified-file.txt

相关问题