在 Github 上查找首次添加特定代码行的提交

在 Github 上查找首次添加特定代码行的提交

我想找到添加以下代码行的提交求解器.cpp用于深度学习库咖啡,托管在 Github 上。我不是贡献者,也没有任何特殊权限。我该怎么做?

template <typename Dtype>
void SGDSolver<Dtype>::ClipGradients() {
  const Dtype clip_gradients = this->param_.clip_gradients();
  if (clip_gradients < 0) { return; }
  const vector<shared_ptr<Blob<Dtype> > >& net_params = this->net_->params();
  Dtype sumsq_diff = 0;
  for (int i = 0; i < net_params.size(); ++i) {
    if (this->net_->param_owners()[i] < 0) {
      sumsq_diff += net_params[i]->sumsq_diff();
    }
  }
  const Dtype l2norm_diff = std::sqrt(sumsq_diff);
  if (l2norm_diff > clip_gradients) {
    Dtype scale_factor = clip_gradients / l2norm_diff;
    LOG(INFO) << "Gradient clipping: scaling down gradients (L2 norm "
        << l2norm_diff << " > " << clip_gradients << ") "
        << "by scale factor " << scale_factor;
    for (int i = 0; i < net_params.size(); ++i) {
      if (this->net_->param_owners()[i] < 0) {
        net_params[i]->scale_diff(scale_factor);
      }
    }
  }
}

答案1

首先,您必须将存储库克隆到您的机器:

git clone https://github.com/BVLC/caffe.git

只需使用git-blame找出谁犯了某行:

git blame -L 123,123 path/to/file.cpp

或者,对于一系列行,使用或类似。您可能需要检测行是否被移动的-L 100,150选项。-M

您还可以使用git-log对于整个提交日志:

git log -L 123,123:path/to/file.cpp

答案2

回应标题针对这个问题的具体内容,而不是描述(因为通过谷歌搜索类似于问题标题的搜索短语会将我带到这里),我建议以下内容:

将存储库克隆到你的机器:

git clone https://github.com/BVLC/caffe.git

然后在 git log 中搜索包含搜索词的所有提交:

git log -S searchTerm

最后,跟踪输出以便只看到最旧的提交,因为这一定是该提交所在的提交特定行首先添加

git log -S searchTerm | tail -4

相关内容