首先的问题:git扩展来明确跟踪文件重命名?
是否有任何工具或补丁的git,使得它专门存储元数据有关文件重命名(很像混帐SVN以“混帐svn的-ID”一样)? 没有这个,是否有另一个DVCS给我快速的本地分支(如git)和适当的文件重命名跟踪(如集市)?
现在一些背景,为什么我需要这样的:
我开始使用了几个月的混帐,我真的很喜欢它。除了它不跟踪重命名的事实。
在我看来,不跟踪重命名的决定是基于错误的假设,它是重要的内容,而不是名称。我不同意。让我给你一个真实世界的例子。
我有一个类RefinementPresentation
它被用作网页视图模板中的模型。我将这个类移动到一个单独的包(模型)中,然后,因为类不仅仅是一个模型,而且包含了大量的逻辑,所以我通过将逻辑移动到另一个类来重构它。你可以想象,现在这个班与原来的班级几乎没有什么相似之处。但从概念上讲,这是一回事 - 它仍然是这个观点的模型。 这就是我的观点。无论文件是相同的文件(重命名/移动)还是不同的文件都是我脑海中的概念,没有工具可以或不应该尝试为我做。如此不同,没有任何启发式或猜测会让git认识到这实际上是一个移动的文件。这意味着git日志永远不会显示过去的移动历史。当然,历史依然存在 - 它不会丢失 - 这很难实现。因此我的问题是:有没有办法避免这种不便?
编辑:移动和重构在不同的提交是一个很好的解决方法,请参见下面的评论(感谢伊布!)。
移动并在单独的提交中重构该文件。 – Eevee 2013-02-12 06:55:59
可能重复[如何真正显示重命名文件的日志与git?](http://stackoverflow.com/questions/5743739/how-to-really-show-logs-of-renamed-files-with-git) – CharlesB 2013-02-12 07:11:59
正如问题中所解释的那样,这些文件实际上是不同的,所以“git log --follow”或类似的命令永远无法帮助。我需要一种不同的方法来跟踪重命名,不会根据文件内容的相似性来猜测它们。 – 2013-02-12 07:20:24