I checked some source code into GIT with the commit message "Build 0051".
However, I can't seem to find that source code any more - how do I extract this source from the GIT repository, using the command line?
Update
Update
The source code is definitely there, now its a matter of checking it out:
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>
If the change is not too old, you can do,
git reflog
and then checkout the commit id
git log --grep="Build 0051"
should do the trick
Try this!
git log | grep -b3 "Build 0051"
To search across all the branches
git log --all --grep='Build 0051'
Once you know which commit you want to get to
git checkout <the commit hash>
Though a bit late, there is :/
which is the dedicated notation to specify a commit (or revision) based on the commit message, just prefix the search string with :/
, e.g.:
git show :/keyword(s)
Here <keywords>
can be a single word, or a complex regex pattern consisting of whitespaces, so please make sure to quote/escape when necessary, e.g.:
git log -1 -p ":/a few words"
Alternatively, a start point can be specified, to find the closest commit reachable from a specific point, e.g.:
git show 'HEAD^{/fix nasty bug}'
See: git revisions manual.
I put this in my ~/.gitconfig
:
[alias]
find = log --pretty=\"format:%Cgreen%H %Cblue%s\" --name-status --grep
Then I can type "git find string" and I get a list of all the commits containing that string in the message. For example, to find all commits referencing ticket #33:
029a641667d6d92e16deccae7ebdeef792d8336b Added isAttachmentEditable() and isAttachmentViewable() methods. (references #33)
M library/Dbs/Db/Row/Login.php
a1bccdcd29ed29573d2fb799e2a564b5419af2e2 Add permissions checks for attachments of custom strategies. (references #33).
M application/controllers/AttachmentController.php
38c8db557e5ec0963a7292aef0220ad1088f518d Fix permissions. (references #33)
M application/views/scripts/attachment/_row.phtml
041db110859e7259caeffd3fed7a3d7b18a3d564 Fix permissions. (references #33)
M application/views/scripts/attachment/index.phtml
388df3b4faae50f8a8d8beb85750dd0aa67736ed Added getStrategy() method. (references #33)
M library/Dbs/Db/Row/Attachment.php
This:
git log --oneline --grep='Searched phrase'
or this:
git log --oneline --name-status --grep='Searched phrase'
commands work best for me.
first to list the commits use
git log --oneline
then find the SHA of the commit (Message), then I used
git log --stat 8zad24d
(8zad24d) is the SHA assosiated with the commit you are intrested in (the first couples sha example (8zad24d) you can select 4 char or 6 or 8 or the entire sha) to find the right info
git log --grep=<pattern>
Limit the commits output to ones with log message that matches the
specified pattern (regular expression).
For anyone who wants to pass in arbitrary strings which are exact matches (And not worry about escaping regex special characters), git log takes a --fixed-strings option
git log --fixed-strings --grep "$SEARCH_TERM"
Source: Stackoverflow.com