以前はこれが可能でしたが、Githubは2013年半ばにこの機能を削除しました。これをローカルで実現するには、次のようにします。
git log -g --grep=STRING
(他のブランチや未確定コミットを検索したい場合は-gフラグを使用してください。)
-g, --walk-reflogs
Instead of walking the commit ancestry chain, walk reflog entries from
the most recent one to older ones.
更新(2017/01/05):
Githubは、あなたが自分のUI内からコミットメッセージ内を検索できるようにするアップデートを公開しました。詳しくは、 ブログ投稿 をご覧ください。
私は同じ質問をし、昨日誰か@Githubに連絡しました。
検索エンジンをElasticSearchに切り替えたため、Github UIを使用してコミットメッセージを検索することはできません。しかし、その機能はチームのウィッシュリストにあります。
残念ながら、その機能のリリース日は今のところありません。
簡単に言うと、github.comのWebサイトで直接コミットメッセージを検索することはできません。当分の間、このスレッドに関する他の人が提案したローカルのgit grep
解決策をお勧めします。
ある時点で、GitHubは単一のリポジトリに対してコミットメッセージをgit grep
スタイルで検索することを提案しました。残念ながら、このアプローチではファイルサーバーにアクセスできないサービス拒否攻撃が行われました。このため、git grep
検索を削除しました。
現在の予想外の見積もりでは、GitHubでのコミット数は約800億マークに上ると推定されています。 Googleのエンジニアは私たちの背後で笑っていますが、これはElasticSearchに保存するためのかなり多数のドキュメントです。このデータセットを検索可能にしたいのですが、それは簡単なプロジェクトではありません。
これはGitHubから削除されました。私が使う:
$git log --all --oneline | grep "search query"
作者でフィルタすることもできます。
$git log --all --oneline --author=rickhanlonii | grep "search query"
コードを検索する ヘルプページ から、これはまだ不可能なようです。
検索するファイルやパスを選択する機能を含め、リポジトリ内のテキストを検索できますが、コミットで検索することを指定することはできません。
たぶん これを彼らに示唆します ?
これは、Googleによってクロールされたリポジトリを使用して実行できます(結果はリポジトリごとに異なります)。
クロールされたすべてのリポジトリのすべてのブランチで "ライセンスの変更"を検索します。
「ライセンス変更」サイト: https://github.com/*/*/commits
クロールされたすべてのリポジトリの「ライセンスの変更」の検索マスターブランチ
「ライセンス変更」サイト: https://github.com/*/*/commits/master
クロールされたすべてのTwitterリポジトリの「変更ライセンス」でマスターブランチを検索
「ライセンス変更」サイト: https://github.com/Twitter/*/commits/master
Twitter/some_projectリポジトリのすべてのブランチで "ライセンスの変更"を検索してください。
「ライセンス変更」サイト: https://github.com/Twitter/some_project/commits
2017年1月に更新 (2年後):
コミットメッセージを検索できます。 (それでもマスターブランチのみ)
2015年2月: Elasticsearch (1月に導入 に基づく)に基づく現在の検索インフラストラクチャを考慮すると、これが可能になる可能性があることはわからない2013 )。
GitHubでElasticsearchの紹介を担当したGitHub関係者との インタビュー「信頼できるおよび/または公式の情報源から引き出す」という回答として、 (8月) 2013)
Tim Pease:そこには2つのドキュメントタイプがあります。1つはソースコードファイル、もう1つはソースコードファイルです。一つはリポジトリです。 gitが機能する方法は、あなたがコミットを持っていて、コミットごとにブランチがあるということです。リポジトリ文書は、インデックス付けされた特定のリポジトリに対する最新のコミットを追跡します。ユーザーが新しいコミットをGithubにプッシュしたら、次にそのリポジトリ文書をelasticsearchから取得します。それから最後にインデックスが作成されたコミットを見てから、この最近のPushと以前にインデックスを作成したものとの間に変更、追加、または削除されたすべてのファイルのリストを取得します。それから先に進み、変更された文書を更新するだけです。誰かがプッシュするたびにソースコードツリー全体を再インデックス付けする必要はありません。
Andrew Cholakian:だから、あなただけがインデックスを付けます、私はマスターブランチだと思います。
Tim Pease:その通りです。それはあなたがそこに入ることになるのはマスターブランチの頭だけです、それでもまだそれはたくさんのデータ、20億文書、30テラバイトです。
Andrew Cholakian:それは実に巨大です。
[...]
Tim Pease:Pushのソースコードの索引付けでは、自己修復プロセスです。
最後のインデックス付きコミットを追跡するリポジトリ文書があります。失敗した場合、それらの仕事が失敗する3つのコミット、次のコミット、を見逃しても、前回のインデックス作成と今回の新しいPushで発生しているコミットとの違いを調べています。git diff
を実行すると、更新、削除、または追加されたすべてのファイルが手に入ります。あなたはただ言うことができます。さて、私たちはこれらのファイルを削除する必要があります。これは自己修復的なものであり、これが私たちが採用したアプローチのほとんどすべてのアーキテクチャに当てはまります。
すべてがすべての分岐すべてがそのアプローチで索引付けされることを意味するわけではありません。
グローバルコミットメッセージの検索は現在のところ利用できません。
そして Tim Pease自身がコミットメッセージがインデックスされていないことを確認します。
ローカルクローンの独自のelasticsearchローカルインデックスを取得することは不可能ではないことに注意してください。「 ElasticSearchを使ったgitリポジトリの検索 」を参照してください。
しかし、特定のリポジトリでは、クローンを作成して次の操作を実行するのが最も簡単な方法です。
git log --all --grep='my search'
これはGithubから削除されたので、これを行うためにLinuxでgitk
を使用しています。
端末からリポジトリに行き、gitk
と入力してください。
Guiの真ん中には、検索ボックスがあります。それはフィルタの良い選択を提供します。
スコープ - 包含、パスの変更、文字列の追加/削除、行の一致の変更
マッチタイプ - 完全/無視/正規表現
検索フィールド - すべてのフィールド/見出し/コメント/コミッター
Githubが機能を追加するまで、これはEclipse内からうまく機能します。
https://wiki.Eclipse.org/EGit/User_Guide#Searching_for_commits
もしあなたがUbuntu(あるいはおそらく他のUnix OS)で作業していてローカルバージョンのレポを持っているのなら、あなたの検索語にマッチするすべてのコミットに対してGitHubページを開くために私が書いたデフォルトのブラウザ
#!/bin/sh
for sha1 in $(git rev-list HEAD -i --grep="$1"); do
python -mwebbrowser https://github.com/RepoOwnerUserName/RepoName/commit/$sha1 >/dev/null 2>/dev/null
done
https://github.com/RepoOwnerUserName/RepoName/
をあなたのレポジトリの実際のGithub URLに置き換え、スクリプトをどこかに保存し(例えばgithubsearch.sh
として)、それを実行可能にし(chmod +x githubsearch.sh
)、それからあなたの~/.bashrc
ファイルに次のエイリアスを追加してください。
alias githubsearch='/path/to/githubsearch.sh'
それから、あなたのgitリポジトリのどこからでも、ただターミナルでこれをしてください:
githubsearch "what you want to search for"
そしてあなたの(大文字小文字を区別しない)検索語にマッチするコミットはあなたのブラウザで開かれたそれらに対応するGitHubページを持つでしょう。 (検索語が何百ものコミットに含まれていると、ブラウザがクラッシュしてしばらくの間PCのCPUが消費される可能性があることに注意してください。)
私はUbuntuでこれをテストしただけで、これが他のUnixベースのOS上で動作するかどうかを知るのに十分なシェルスクリプトについて知りません - 特にここで使ったものがBash特有かどうかわかりません。互換性情報を追加するには、コメントするか編集してください。