브랜치에서 작업할 때 "TODO" 주석으로 빠르게 이동하고 싶습니다. 이것은 의미한다
- 내 브랜치에 "TODO" 주석만 추가하고 싶습니다(마스터의 주석은 무시).
- 각 일치 항목에 대해 파일과 줄 번호를 표시하고 싶습니다.
나는 두 가지 부분적인 해결책을 알고 있습니다. 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