是否可以在Git中移动/重命名文件并维护它们的历史记录?

是否可以在Git中移动/重命名文件并维护它们的历史记录?

我想重命名/移动Git中的一个项目子树,将它从

/project/xyz

/components/xyz

如果我用平原git mv project components的所有提交历史记录。xyz project迷路了。有没有办法让历史得以延续?


缥缈止盈
浏览 1054回答 3
3回答

拉风的咖菲猫

没有。简单的回答是不,不可能在Git中重命名文件并记住历史。这是一种痛苦。有传言说git log --follow--find-copies-harder将工作,但它对我不起作用,即使文件内容没有任何更改,而且这些移动都是用git mv.(最初,我使用Eclipse在一个操作中重命名和更新包,这可能会混淆git。但这是一件很普通的事。--follow如果只有一个mv执行,然后commit而mv不算太远。)Linus说,您应该全面了解软件项目的全部内容,而不需要跟踪单个文件。可悲的是我的小脑袋做不到。它是真烦人有那么多人无意识地重复了GIT自动跟踪动作的说法。他们浪费了我的时间。吉特不做这种事。按设计(!)GIT根本不跟踪移动。我的解决方案是将文件重命名为原来的位置。更改软件以适应源代码管理。有了吉特,你似乎只需要第一次就把它记好。不幸的是,这破坏了Eclipse,Eclipse似乎使用--follow.git log --follow有时不显示具有复杂重命名历史记录的文件的完整历史,即使git log的确如此。(我不知道原因。)(有一些太聪明的黑客回去重新开始旧的工作,但它们相当可怕。见GitHub-Gist:发射器/git-mv-有历史.)
打开App,查看更多内容
随时随地看视频慕课网APP