私はコミットメッセージ "Build 0051"でいくつかのソースコードをGITにチェックインしました。
しかし、私はもうそのソースコードを見つけることができないようです - どうやったらコマンドラインを使ってGITリポジトリからこのソースを取り出すのですか?
アップデート
アップデート
ソースコードは間違いなく存在しています。今すぐチェックしてください。
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 log --all --grep='Build 0051'
リポジトリの履歴から実際のコミット内容を検索するには、次のようにします。
git grep 'Build 0051' $(git rev-list --all)
与えられたテキスト、それを含むファイル名、そしてcommit sha1のすべてのインスタンスを表示します。
最後に、コミットがぶら下がっていて履歴にまったく関連していない場合の最後の手段として、-g
フラグでreflog自体を検索できます(--walk-reflogs
の略)。
git log -g --grep='Build 0051'
編集:あなたがあなたの歴史を失ったように思われるなら、あなたの安全策としてreflog
をチェックしてください。でリストされているコミットの1つでBuild 0051を探してください
git reflog
あなたは単にあなたのHEAD
を 'Build 0051'コミットが表示されない歴史の一部に設定したか、あるいは実際にそれを吹き飛ばしたかもしれません。 git-ready reflog という記事が役に立つかもしれません。
reflogからコミットを回復するには :あなたが見つけたコミットのgitチェックアウトをしてください(そして参照用に新しいブランチやタグを付けてください)
git checkout 77b1f718d19e5cf46e2fab8405a9a0859c9c2889
# alternative, using reflog (see git-ready link provided)
# git checkout HEAD@{10}
git checkout -b build_0051 # make a new branch with the build_0051 as the tip
これを私の〜/ .gitconfigに入れます。
[alias]
find = log --pretty=\"format:%Cgreen%H %Cblue%s\" --name-status --grep
それから、 "git find string"とタイプすれば、その文字列を含むすべてのコミットの一覧がメッセージに表示されます。たとえば、チケット#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
少し遅れていますが、コミットメッセージに基づいてコミット(またはリビジョン)を指定するための専用の表記法である:/
があります。検索文字列の前に:/
を付けるだけです。
git show :/message
ここで<message>
は空白からなる複雑な正規表現パターンになることがあるので、必要ならば引用符/エスケープを忘れないでください。例えば:
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 --grep="Build 0051"
トリックをするべきです
これを試して!
git log | grep -b3 "Build 0051"
最初にコミットのSHAを見つけるためにgit log --oneline
を使い(Message)、次に正しい情報を見つけるためにSHAとともに最初のgit log --stat 8zad24d
を使いました(8zad24d)。