我要在现有的项目移动吨附近的文件。我这样做之前,我想对用于分析具有多档历史码的一些技术牢牢掌握。

如何使用git地问:“在哪里这行代码是从哪里来的?”当内容已经通过多个文件移动在它的续航时间?

我知道Git并不跟踪重命名明确(有很好的理由),所以它好像我应该能问这个,我只是不知道如何。如果有方法的可视化这一点,会是巨大的,太知道了。

有帮助吗?

解决方案

我会建议在GIT工具箱看着三个工具。第一个是怪,这是大同小异,因为它是在CVS。它显示其呈交最后一个接触的每一行中的文件。如果你想看看前看到什么在那里,你可以采取承诺感动在先前提交的线和外观。

git show <sha1_of_interesting_commit>^ -- file/path

您可以重复怪,看看在这之前发生了什么。

git blame <sha1_of_interesting_commit>^ -- file/path

在第二工具是用--follow跟踪文件重命名过去

git log --follow -- file/path

在第三 - 和可能是最有用的工具 - 是登录的镐选项。这种搜索历史变化取出,引入或改变线路,其中包括文本的特定位。这对跟踪之类的函数名特别有用。它可以在一个特定的承诺是一个新的文件,但没有它来自不同的源文件?是它的呼叫加入的同时或之前它移动?

git log -S"Interesting_Function"

如果您使用的贴片或STAT选项(例如-p--stat)的输出将被限制在其更改实际参与搜索字符串,除非你还使用--pickaxe-all被显示在整个变化,其中这些文件。

git grep联合来显示,其中所有的字符串的当前事件是,镐是一种极为有用的历史挖掘工具。

其他提示

git blame是你会用什么来问:“在哪里这行代码是从哪里来的?”。我不知道,如果它处理重命名。大概确实

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top