2012-08-06 92 views
1

在这里我做了什么:从主git的日志文件名--follow没有显示提交更改的文件

  • 创建开发分支;
  • 修改了几个文件并提交了它们;
  • 合并开发分支掌握--no-commit参数;在开发分支中修改的几个文件上运行git reset --hard因为master分支只包含来自开发分支的几个对象 - 即我已经部分地合并了开发变更;
  • 我已经承诺在主人的变化;
  • 经过一段时间,主分支由其他开发人员更新,并更新我的开发分支我合并主分支到它。

我已经准备好了,我的开发对象我没有承诺要掌握我以前的合并将被主文件覆盖。但在git log --follow dev-modified-file.txt的输出中,我无法看到覆盖我的开发变更的提交。

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

为什么?

那么master分支的代码是如何潜入我的开发分支而不留下任何痕迹?

P.S.如果我的描述不清楚,请在评论中提问,我会很乐意解释和纠正这篇文章。

编辑:将我的主人合并到开发中后,我看不到master和development分支之间的区别(我省略的更改都没有了!),我没有看到commit在开发分支中负责!

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

  • 我已经添加了对文件的更改 - 工作文件夹中的文件包含更改。
  • 我已经将主分支合并到了开发中 - 尽管没有任何责任,但我的编辑文件在主分支中变成了等量的许多提交到开发分支!

改变,没有留下的痕迹消失在合并后我加入更改该文件!

+0

当您看到没有“no提交删除该代码“,或在开发分支上?即是否在'master'上没有看到开发分支的合并更改,或者在开发分支上出现'master'的版本意外? – Christopher 2012-08-06 15:27:59

+0

在开发分支上。开发分支是引入所有变更的地方。在合并到主人期间,我只部分应用了这些更改。而这些省略的变化仅在开发分支中。我没有看到他们在主人身上 - 我没有故意犯下这些事情。但是,在将我的主人合并到开发中后,我看不到master和development分支之间的区别(我省略的更改已经消失了!),但我没有看到提交对此负责! – shytikov 2012-08-06 15:34:28

+1

我敢打赌,'我的主人融入发展'承诺。试试'git diff 〜1 ',看看它做了什么改变。 – Christopher 2012-08-06 15:47:55

回答

0

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

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