私が使用しているgitコマンドをより便利にしようとしています。私がする一般的な作業は、これを行うためにgrep
私がgit rev-list --all
書いた(他のStackExchangeの答えを切り取り、貼り付けるとも呼ばれます)、gitコマンドを使用することです。
~/bin/git-search
:
!/bin/bash
function _search() {
git rev-list --all | (
while read revision; do
git grep -F $1 $revision
done
)
}
_search $1
出力は次のとおりです。
f26ce56cf6b17401292c494f906b2b6a9071ca75:filename.py:grepped string
私は通常、これらの結果をgit show
コミットとファイルパスで実行して、ファイルの特定のバージョンを確認します。git show
入力が許可されました{COMMIT HASH}:path/to/file
。
:
理想的には、私のgit関数が2番目の関数を持つスペースを貼り付けて、出力をより簡単にコピーして貼り付けることができるようにしたいと思いますgit-search
。git show
例:
f26ce56cf6b17401292c494f906b2b6a9071ca75:filename.py grepped string
すでにBASHを使用しているので、BASHを使いたいです。私の最初の解決策はPythonを使用することでしたが、これは私にとって不要なようです。 BASHでこれを実装する最良の方法はわかりません。
ベストアンサー1
sed 's/:/ /2'
これにより、2 番目の:
文字が空白に変わります。
関数パイプラインで追加の手順でこれを実行できます。
#!/bin/sh
git rev-list --all |
while read revision; do
git grep -F "$1" "$revision"
done |
sed 's/:/ /2'
(実際には必要ないように見えたので、その関数を削除しました。変数拡張への参照も参照してください。ああ、そして特定の機能を使用しないのでスクリプトです(不要な/bin/sh
キーワードを除いbash
てfunction
あなたの機能も同じです))