git log --follow 文件名不显示提交更改了该文件



在这里我做了什么:

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

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

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

为什么?

来自主分支的代码是如何潜入我的开发分支而不留下任何痕迹的?

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

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

我相信这可能与合并策略有关...但是怎么做呢?你看,我的登录开发分支是这样的:

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

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

由于

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

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

最新更新