gitでファイルを検索する際、特定のファイルだけ除外したい場合がある。
たとえば、
- ソースコード中の文言を探したいが、翻訳ファイルは除外したい
:(exclude)をつけると、exclude_patternに該当するファイルを除外できる。
git grep regex path... ':(exclude)exclude_pattern'
gitでファイルを検索する際、特定のファイルだけ除外したい場合がある。
たとえば、
:(exclude)をつけると、exclude_patternに該当するファイルを除外できる。
git grep regex path... ':(exclude)exclude_pattern'
.iniのファイルを除いてScreenshotを探す場合、
$ git grep Screenshot UI ':!*.ini'と、
:!に続いて除外するファイル名を書く。
.git/objects下のデータをハードリンクで作成することで、時間・容量を減らせる。
git clone --local repository [directory]
objectsのファイルは、一度作成されると中身が書き換えられることはないので、特に使用する上で制約はないはずだ。
Git-fetchで新しいコミットを取り込んだ場合は、新しいファイルが作成されるようだ。
また、元のrepositoryでgit-gcを使った場合など、ハードリンクが切れて、消費する容量は大きくなる可能性がある。
--depthオプションで浅いクローンを作ることで時間・容量を節約できる。
git clone --depth 1 repository [directory]もしローカルのレポジトリからクローンする場合、
file://を前につけないと、--depthオプションが無視されてそのままクローンが開始されてしまう。
浅いクローンでは、変更履歴が取得されないので、履歴を遡るような用途には使用できない。
もし後で履歴が必要になった場合、git fetchで取得することができる。
git clone --depthで取得する方法が書かれていてこの方法を見つけたのだが、
git clone --depthについては以下のサイトにわかりやすく書かれている。
st ()
{
if git rev-parse --is-inside-work-tree &> /dev/null; then
git status "$@";
return $!;
else
svn status "$@";
return $!;
fi
}
もとネタでは, cdの度にコンテキストを切り替えているが,
それだと, 毎回上位ディレクトリに検索に行く. NFSとかを使っていたり, なにか動作が不安定な環境でcdするのが心配だ.
一方で, この方法だと, stのときしか検索しないので, 安全だと思う.