我有一个分支,开发,几天前我使用commit hash 92dd09b 合并。
为清楚起见,这是我在Git Extensions中提交的图片:
鉴于哈希,我需要在合并之前在develop分支上找到先前的提交。我该怎么做呢?
如果我查看我的提交哈希,git log会显示我分支上的先前提交,而不是开发。
我看了这个this question,然后检查了我的合并哈希( 92dd09b )并运行了这个命令:
git log HEAD @ {1} -1
但是我收到一个错误: 致命的:模棱两可的争论' HEAD @':未知的修订或路径不在工作树中。
我正在使用Git for Windows。
答案 0 :(得分:1)
根据评论,似乎我误读了有关提交92dd09b
标识的问题。我在下面保留了原来的答案,以避免让评论对话更加混乱。但根据我目前的理解,你真的有
... x
\
x -- x -- x -- A -- 92dd09b -- x -- M2 -- x <--(develop)
/
... x -- B <--(branch)
在这种情况下,您首先尝试的(checkout 92dd09b
,运行git log)应该显示来自两个分支的提交;你可以排除&#34;合并在&#34;中的提交。分支说
git log --first-parent
或者,根据博士的回答,你可以说
git show 92dd09b~
(除其他外)。
您的评论表明,这并没有让您进入正确的提交,这表明某些内容被错误地观察到了。
因此,我理解你有一个开发分支的问题
x -- x -- x -- A <--(develop)
你有另一个分支
x -- x -- x -- A <--(develop)
... x -- 92dd09b <--(branch)
您将92dd09b
合并到develop
x -- x -- x -- A -- M1 <--(develop)
/
... x -- 92dd09b <--(branch)
现在可能还有一些工作已经发生了
... x
\
x -- x -- x -- A -- M1 -- x -- M2 -- x <--(develop)
/
... x -- 92dd09b <--(branch)
所以现在你想找到A
。
作为一项规则,提交使其易于查看&#34;及时回复&#34 ;;不太容易期待。如果你从92dd09b
开始,你必须&#34;期待&#34;到达M1
,然后回顾A
。
所以它并不像你希望的那么容易。但这是可以完成的。你可以从
开始git log --merges --format=%p develop
这将为develop
中的每个合并提交提供父列表,每行一个。那么你可以通过多种方式过滤它。
git log --merges --format=%p develop |grep 92dd09b$ |cut -d" " -f1
应打印&#34;其他&#34;的缩写哈希值。 M1
的父级,应为A
。 (假设它不是章鱼合并,并假设你将92dd09b 合并到 develop
而不是相反。)
答案 1 :(得分:0)
首先,您不需要签出合并,所以让我们返回开发:
git checkout develop
从已知哈希中获取先前的提交:
git show 92dd09b~
有许多不同的方法可以浏览历史记录来命名另一个提交:https://git-scm.com/docs/gitrevisions