Git合并显示在两个分支中真正重命名的文件的“重命名/删除”

时间:2013-04-12 06:19:19

标签: git

我们正在修复我们的存储库问题,为一些文件添加了不同的路径 - 路径中的第一个文件夹是一组文件的“Application”和另一组文件的“application”。为实现这一目标,我们将所有文件的所有文件重命名为大写“Application”并重新整理整个存储库。

当我们尝试将一个分支合并到另一个分支时,对于许多文件,我们看到:

CONFLICT (rename/delete): 
Applications/Views/sell.cshtml deleted in HEAD and renamed in feature123_branch. 
Version feature123_branch of Applications/Views/sell.cshtml left in tree.

Mergetool提供删除使用重命名文件的文件的选项。

但是这个文件只在HEAD和feature123_branch中重命名,例如github.com显示

file renamed from {applications/ → Applications/}/Views/sell.cshtml for all commits.

我们可以使用“resolve”合并策略,文件将被正确标记为“两者都重命名”,但我们不会丢失文件历史记录(根据我们的git guru关心)。

以下是一个问题:

如何通过git命令(与github提交历史记录相同)查看文件的真实历史记录,显示该文件已重命名?

为什么合并默认的“递归”策略认为此文件未重命名但在分支中删除?

如果我们使用解析策略会丢失文件历史记录吗?

P.S。 Repo是私有的,所以我无法给出链接,抱歉。

1 个答案:

答案 0 :(得分:1)

那是一个古老的,但关于:

  

如何使用git命令查看文件的真实历史记录(与github提交历史记录相同),以显示该文件已重命名?

git log有一个--follow选项:

  

-按照-继续列出文件历史,而不是重命名(仅适用于单个文件)。