保留移动目录中的Git历史记录

时间:2014-04-19 13:16:23

标签: git

我有两个场景

  1. 我有一个本地Git仓库,我将文件移动到不同的文件夹然后提交。历史丢失了,如何将文件历史记录移动到移动的文件中。

  2. 我有一个本地Git仓库,我需要将文件移动到不同的文件夹,如何在不丢失文件历史记录的情况下执行此操作

  3. 示例:

    $ git log src/main/java/com/mywork/app/App.java
    commit 9408dc7ed160d2a1235a2d30ff54458fef4ec2dc
    Author: xybrek <x@gmail.com>
    Date:   Fri Apr 18 19:03:16 2014 +0800
    
        Commit src files
    

    至少应该是文件在移动之前的完整历史记录。这可能吗?

1 个答案:

答案 0 :(得分:1)

历史不会丢失,但你需要告诉Git关注重命名。您通常使用git log --follow path/to/file执行此操作。

有关更多信息,Git没有明确记录重命名,而是使用启发式。 FAQ entry about this说:

  

Git必须与许多不同的工作流互操作,例如某些更改可能来自补丁,其中重命名信息可能不可用。依赖于显式重命名跟踪使得无法合并两个完全相同的树,除了一个做了补丁(创建/删除),一个用其他启发式做了。

     

在第二个注释中,跟踪重命名实际上只是跟踪内容在树中移动的特殊情况。在某些情况下,您可能会对添加函数或将其移动到其他文件时的查询感兴趣。只需依靠在需要时重新创建此信息的能力,Git旨在提供一种更灵活的方式来跟踪树的变化情况。

还有一些与重命名相关的选项。在git-config手册页中查找.rename