pax*_*977 13 git version-control blame
假设我有一个文件A.cpp,我注意到该文件的第15行有错误.假设错误是函数上的"const",它返回一个指向成员变量的指针,这意味着在函数上使用const在技术上是正确的但在语义上是错误的.我想与作出改变的作者讨论语义.
使用git,有没有办法找出引入"const"令牌的修订版?更具体地说,我想知道谁引入了令牌.
"git blame"显示谁对该行进行了最后一次更改,但我实际上希望找到包含该令牌的第一个提交.
Jak*_*ski 27
有几种可行的方法.
git blame
,或者更好的图形怪工具(比如/ gitweb中git gui blame
的责备视图git instaweb
)来浏览一行的历史记录,回到历史记录中直到找到合适的提交.
所谓的"pickaxe搜索",即git log -S
使用适当的token/regexp,来查找(列出)给定令牌数量发生变化的所有提交(通常意味着添加或删除给定令牌的位置),例如:
git log --reverse -p -S'const int foobar' -- A.cpp
Run Code Online (Sandbox Code Playgroud)git bisect
其中"坏"提交意味着具有'const'的那个不存在的地方(使用例如grep测试).
nac*_*tin 13
你正在寻找git bisect.使用此命令,您可以快速找到引入const的提交.
你开始这个过程git bisect start
,然后标记一个旧的版本,没有const与git bisect good
和当前的那个一样好bisect bad
.然后系统会将您发送到中间的版本.您可以检查是否存在邪恶的const,并根据它标记该版本的好坏.然后重复该过程,直到找到错误的提交.
归档时间: |
|
查看次数: |
3443 次 |
最近记录: |