1035

コミット メッセージ「Build 0051」を使用して、いくつかのソース コードを GIT にチェックインしました。

しかし、そのソース コードが見つからないようです。コマンド ラインを使用して、GIT リポジトリからこのソースを抽出するにはどうすればよいですか?

アップデート

  1. SmartGIT を使用して、バージョン 0043、0044、0045、および 0046 をチェックインしました。
  2. 0043 をチェックアウトし、別のブランチで 0051 までのバージョンをチェックインしました。
  3. 0043をもう一度チェックアウトしました。
  4. 今、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>
4

12 に答える 12

1587

指定されたテキストのコミット ログを (すべてのブランチにわたって) 検索するには:

git log --all --grep='Build 0051'

リポジトリの履歴からコミットの実際の内容を検索するには、次を使用します。

git grep 'Build 0051' $(git rev-list --all)

指定されたテキストのすべてのインスタンス、それを含むファイル名、およびコミット sha1 を表示します。

最後に、コミットがぶら下がっていて、履歴にまったく接続されていない場合の最後の手段として、reflog 自体を-gフラグ (略して--walk-reflogs:

git log -g --grep='Build 0051'

編集: 履歴を失ったように思われる場合はreflog、安全策として を確認してください。リストされたコミットのいずれかでビルド 0051 を探します。

git reflog

「Build 0051」コミットが表示されない履歴の一部に単に設定HEADしたか、実際に吹き飛ばした可能性があります。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
于 2011-08-19T17:00:59.257 に答える
106

私はこれを私の中に入れました~/.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
于 2011-08-19T17:07:07.713 に答える
30
git log --grep="Build 0051"

トリックを行う必要があります

于 2011-08-19T17:02:24.530 に答える
29
git log --grep=<pattern>
            Limit the commits output to ones with log message that matches the
            specified pattern (regular expression).
于 2011-08-19T17:01:38.267 に答える
14

これを試して!

git log | grep -b3 "Build 0051"
于 2011-08-19T17:00:33.937 に答える