git移动文件,同时保持历史

时间:2014-06-10 17:22:49

标签: git

我们在工作中使用git。 我们想要移动一个名为" Workflows"的目录。从下面 源极/工作流

到一个新的位置 源极/站点/ CompanySite /工作流

我的同事将该目录的副本复制到新位置" Source / Sites / CompanySite / Workflows"并在做一个" git mv"之前办理登机手续。命令,甚至是行动。

因此,我们在该位置没有历史记录的新文件副本。

但是因为我们只想移动保存历史记录的文件,所以我删除了新副本并尝试做了#34; git mv"移动源文件,同时保留历史记录。 而且我知道即使没有" git mv"

,git也会认识到我们正在重命名

但是因为我的同事副本已经有了一个历史记录(这是一个空的历史记录),所以即使我删除它,也要保留#34;新的历史记录"。

然后,无论我做什么,我都无法使用"原始历史记录"来移动这些文件。

因为它始终保持着新的历史"就在那里。

我希望我的问题很清楚

如何移动这些文件保存其历史记录。 也许"清洗"那个老副本????

2 个答案:

答案 0 :(得分:1)

这取决于您的要求:有可能使用git-filter-branch

这允许您在每个提交上应用一个shellcript,例如:git filter-branch --tree-filter 'rm filename' HEAD

请注意,它会为每次提交创建新的commit-id。有关使用filter-tree移动文件的信息,请参阅this SO Question

答案 1 :(得分:0)

git mv实际上并不确保Git会将其视为一个举动;无论如何,它仍然可以将其视为删除+添加。 Git推断移动,但不记录它们。

如果您需要历史记录,请尝试将--follow标记传递给git log - 它可能能够识别与原始图片的连接并显示其历史记录。