题
我要在现有的项目移动吨附近的文件。我这样做之前,我想对用于分析具有多档历史码的一些技术牢牢掌握。
如何使用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
是你会用什么来问:“在哪里这行代码是从哪里来的?”。我不知道,如果它处理重命名。大概确实
不隶属于 StackOverflow