ブランチで作業するときは、「TODO」コメントにすばやく移動したいと思います。これは意味する
- 私のブランチに「TODO」コメントのみを追加したいです(マスターのコメントは無視)。
- 各一致のファイルと行番号を表示したいと思います。
私は2つの部分的な解決策を知っています。git grep TODO
形式は正しいが(grep.lineNumberをtrueに設定)、結果が多すぎます。 git diff master... | grep TODO
良い結果セットですが、ファイルと行番号は表示されません。
git diff
変更された各行にファイル名と行番号のプレフィックスを追加するように指示するオプションはありますか? (--line-prefix
有望に見えますが、固定文字列だけが必要なようです。)
合格できますか--new-line-format=":%dn: %L"
(diff - 行番号出力)合格git diff
?
たとえば、現在の検索結果は次のようになります。
$ git diff master... | grep TODO
+ // TODO use a non-fatal assertion
+ // TODO use a non-fatal assertion
+// TODO make this conditional too
しかし理想的には私はこれが欲しい:
src/foo/abc.cpp:221:+ // TODO use a non-fatal assertion
src/foo/xyz.cpp:934:+ // TODO use a non-fatal assertion
src/foo/util/extra.h:49:+// TODO make this conditional too
答え1
patch
Gitログを使用できます。
git log -p
# Hit '/' for search mode.
# Type TODO
# Then hit 'n' for next
ポイントを制限するには追加できます。firstcommit...HEAD
答え2
OPと同じことをしたいです。私のブランチに追加されたTODOを見つけてください。
だから私はdiff2vimgrepスクリプト。次に電源を接続します。fzf.vim(vimのファジィファインダー):
command! -bang -nargs=0 RgDiffMaster call fzf#vim#grep("git diff master... | diff2vimgrep", 0, {}, <bang>0)
答え3
ほぼ一致しました。 ~から公式のgit-grepドキュメント:
-h
-H
By default, the command shows the filename for each match. -h option is used
to suppress this output. -H is there for completeness and does not do
anything except it overrides -h given earlier on the command line.
...
-n
--line-number
Prefix the line number to matching lines.
これは次のコマンドを意味します。
git grep -n TODO
「TODO」を含むすべてのファイルは、名前(デフォルトの動作)と一致する行番号(使用-n
)で表示する必要があります。出力例:
lib/my_script.py:67: # TODO patch this
^ ^ ^
| | |
filepath line number matched line
一致する項目が多すぎる場合は、grep検索から:^some_folder
そのフォルダを除外できます(「はい」の段落を参照)。some_folder
git grep -n TODO :^some_folder
または、出力をフィルタリングして目的のファイルまたはフォルダのみを見つけるには、sed
または同じシェルコマンドをパイプします。awk
また、デフォルトで表示される行番号を設定することもできます(「設定」の段落を参照)。
grep.lineNumber
If set to true, enable -n option by default.
これは他の回答で説明されているように設定できます。この問題、例えば:
git config --global grep.lineNumber true