我们在工作中使用git。 我们想要移动一个名为" Workflows"的目录。从下面 源极/工作流
到一个新的位置 源极/站点/ CompanySite /工作流
我的同事将该目录的副本复制到新位置" Source / Sites / CompanySite / Workflows"并在做一个" git mv"之前办理登机手续。命令,甚至是行动。
因此,我们在该位置没有历史记录的新文件副本。
但是因为我们只想移动保存历史记录的文件,所以我删除了新副本并尝试做了#34; git mv"移动源文件,同时保留历史记录。 而且我知道即使没有" git mv"
,git也会认识到我们正在重命名但是因为我的同事副本已经有了一个历史记录(这是一个空的历史记录),所以即使我删除它,也要保留#34;新的历史记录"。
然后,无论我做什么,我都无法使用"原始历史记录"来移动这些文件。
因为它始终保持着新的历史"就在那里。
我希望我的问题很清楚
如何移动这些文件保存其历史记录。 也许"清洗"那个老副本????
答案 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
- 它可能能够识别与原始图片的连接并显示其历史记录。