我将一些源代码签入GIT,并提交消息“Build 0051”。

然而,我似乎再也找不到那个源代码了——如何使用命令行从GIT存储库中提取这个源代码呢?

更新

使用SmartGIT在0043、0044、0045和0046版本中检出。 签出了0043,并在不同的分支签入了0051之前的版本。 又查了一次0043。 现在,0051已经消失了。

更新

源代码肯定在那里,现在是检查它的问题:

C:\Source>git log -g --grep="0052"
commit 77b1f718d19e5cf46e2fab8405a9a0859c9c2889
Reflog: HEAD@{10} (unknown <Mike@.(none)>)
Reflog message: commit: 20110819 - 1724 - GL: Intermediate version. File version:  v0.5.0 build 0052.
Author: unknown <Mike@.(none)>
Date:   Fri Aug 19 17:24:51 2011 +0100

    20110819 - 1724 - GL: Intermediate version. File version: v0.5.0 build 0052.

C:\Source>

当前回答

虽然有点晚,但有:/,这是一个专用的符号,用于指定基于提交消息的提交(或修订),只需在搜索字符串前加上:/,例如:

git show :/keyword(s)

这里<keywords>可以是单个单词,也可以是由空格组成的复杂正则表达式模式,所以请确保在必要时引用/转义,例如:

git log -1 -p ":/a few words"

或者,可以指定一个起始点,以找到从特定点可到达的最近提交,例如:

git show 'HEAD^{/fix nasty bug}'

参见:git修订手册。

其他回答

git log --grep=<pattern>
            Limit the commits output to ones with log message that matches the
            specified pattern (regular expression).

对于任何想要传入精确匹配的任意字符串(并且不担心转义正则表达式的特殊字符)的人来说,git log有一个——fixed-strings选项

git log --fixed-strings --grep "$SEARCH_TERM" 
git log --grep="Build 0051"

应该能成功

这样的:

git log --oneline --grep='Searched phrase'

或:

git log --oneline --name-status --grep='Searched phrase'

命令最适合我。

首先列出所使用的提交

git log --oneline

然后找到SHA的提交(消息),然后我使用

 git log --stat 8zad24d

(8zad24d)是与您感兴趣的提交相关的SHA(第一对SHA示例(8zad24d),您可以选择4个字符或6个或8个或整个SHA)来找到正确的信息