如何經過提交消息搜索Git存儲庫?

我使用提交消息「Build 0051」檢查了一些源代碼到GIT中。 git

可是,我彷佛沒法再找到源代碼 - 如何使用命令行從GIT存儲庫中提取此源代碼? 正則表達式

更新 express

  1. 使用SmartGIT檢查版本0043,0044,0045和0046。
  2. 檢出0043,並檢查其餘分支上的版本0051。
  3. 再次檢查0043。
  4. 如今,0051已經消失了。

更新 安全

源代碼確定存在,如今須要檢查它: ide

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>

#1樓

雖然有點晚,可是:/是基於提交消息指定提交(或修訂)的專用符號,只需在搜索字符串前加上:/ ,例如: ui

git show :/message

這裏的<message>能夠是由空格組成的複雜正則表達式模式,所以請務必在必要時引用/轉義,例如: spa

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

或者,能夠指定起始點,以查找從特定點可到達的最近提交,例如: 命令行

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

請參閱: git修訂手冊日誌


#2樓

首先使用git log --oneline查找提交的SHA(Message),而後我使用git log --stat 8zad24d和SHA(第一對情侶sha char示例(8zad24d))來查找正確的信息code


#3樓

試試這個!

git log | grep -b3 "Build 0051"

#4樓

要搜索給定文本的提交日誌(跨全部分支):

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

要經過回購歷史記錄搜索提交的實際內容,請使用:

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

顯示給定文本的全部實例,包含文件名和提交sha1。

最後,做爲最後的手段,若是您的提交懸空而且根本沒有鏈接到歷史記錄,您可使用-g標誌搜索reflog自己( --walk-reflogs

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

編輯:若是您彷佛丟失了歷史記錄,請將reflog做爲您的安全網。 在列出的其中一個提交中查找Build 0051

git reflog

您可能只是將HEAD設置爲歷史記錄的一部分,其中「Build 0051」提交不可見,或者您可能實際上將其吹走了。 git-ready reflog文章可能會有所幫助。

要從reflog中恢復您的提交 :執行您找到的提交的git checkout(並可選擇建立一個新的分支或標記以供參考)

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

#5樓

git log --grep=<pattern>
            Limit the commits output to ones with log message that matches the
            specified pattern (regular expression).
相關文章
相關標籤/搜索