如何在git中移动文件(同时保留历史记录)并创建一个同名的文件?

How to move a file (while preserving the history) and create one with the same name in git?

提问人:Foaly 提问时间:9/23/2015 更新时间:9/23/2015 访问量:42

问:

我有以下问题:我有一个 git 存储库,我想将文件 x.y 从目录 A 移动到目录 B,同时保留其历史记录。然后,我想在目录 A 中创建一个名称相同 (x.y) 但内容不同的新文件。

我已经尝试过使用然后在 A 中创建一个新文件 x.y。但它并没有按照我想要的方式工作。我的 git 日志显示该文件是新创建的(并且没有历史记录),并且删除了文件的旧内容并添加了新内容(此文件仍然具有所有历史记录,而它应该没有)git mv A/x.y B/x.yB/x.yA/x.y

所以我对 git 专家的问题是:这可能吗,我该怎么做?在创建文件时,是否有我可以使用的参数或其他东西?git add

Git 的

评论

0赞 dtech 9/23/2015
不幸的是,git 移动文件的检测和处理不是那么好,这就是为什么你会注意到这样的事情。

答:

0赞 VonC 9/23/2015 #1

尝试一个 :您应该看到甚至在移动之前的日志历史记录。git log --follow -- b/x.yx.y

--follow

除了重命名之外,继续列出文件的历史记录(仅适用于单个文件)。

如果你不想使用你需要 git filter-branch--follow

但是,这在 GitHub(或 BitBucket)上不可见。

评论

0赞 Foaly 9/23/2015
好的,我明白了。但它在 Github 上并没有以这种方式显示......编辑:使用git log --follow
0赞 dtech 9/23/2015
@Foaly您在本地计算机上执行某些操作,则不会影响 github。Github 需要在他们看来使用命令/实现类似的系统才能实现。git log
0赞 VonC 9/23/2015
@dtech我认为 OP 意味着,一旦推送到 GitHub,扩展的历史记录(使用 --follow)将不再可见。