我们正在使用git-flow风格的工作流程,我们希望找出哪个拉取请求包含对给定代码行的更改。
假设我们有以下历史:
c---e---g
/ \
-a---b---d---f---h--- master
我的拉取请求已在h
合并了提交消息"合并拉取请求#123"。
如果我对拉取请求中添加的代码行负责,它会向我显示e
,而不是h
。
12345678 (Wilfred Hughes 2015-02-02 15:22:40 +0000 402) # Some old code
e (Wilfred Hughes 2015-02-12 15:22:40 +0000 402) # Added in the PR, line 1
e (Wilfred Hughes 2015-02-12 15:22:40 +0000 403) # Added in the PR, line 2
56789012 (Wilfred Hughes 2015-02-26 17:24:18 +0000 404) # More old code
如何在git中找到给定代码行的合并提交?
(注意这与this related question不同,因为我从代码行开始,而不是提交。)
答案 0 :(得分:2)
如果你在该提交中解决了冲突,那么合并提交只会出现在git-blame中。
对于没有冲突的正常合并, h 永远不会出现在git blame中,因为它在任何代码行中都没有改变,只是合并了 g 和 f < / em>的
所以你想要的可以分两个阶段实现
首先找到您感兴趣的哪些提交受影响的代码行。这可以通过git blame -L选项实现(在git 1.8.4中)。给出10+行的范围,因为可能确切的行号可能已经改变。
$ git blame -L200,+ 10 - filename.ext
在步骤1中找到提交后查找第一个合并提交 因此,您必须首先找到哪个提交会影响您感兴趣的代码行。这可以通过Find merge commit which include a specific commit