2010-04-23 5 views
38

사라진 행을 찾으려면 git 저장소에서 특정 파일의 기록을 검색해야합니다. 커밋 메시지에는 검색 할 관련 텍스트가 없습니다. 어떤 명령을 사용해야합니까?사라진 행에 대한 git 기록을 어떻게 검색합니까?

추가 세부 사항 : 이것은 우리의 별 볼일없는 작업 추적 소프트웨어에서 수행 할 작업 목록입니다. 나는 소프트웨어에 나와있는 정보가 충분하지 않기 때문에 2 년 동안 유지해 왔습니다. 내 커밋 메시지에는 일반적으로 불행히도 작업 ID 만 포함되어 있으며 번호로 작업하지 않고 제목별로 작업을 찾아야합니다. 예, 실제 솔루션은 소프트웨어를 더 잘 추적하는 작업이지만, 그것은 완전히 제 손에서 벗어납니다.

답변

74

이것은 곡괭이에 대한 직업입니다! 망할 놈의 로그 맨 페이지에서

: 소개 또는 <string>의 인스턴스를 제거 차이

-S<string>

봐. 이것은 단순히 diff 출력에 나타나는 문자열과 다릅니다. 자세한 내용은 gitdiffcore (7)의 pickaxe 항목을 참조하십시오.

당신은 물론 예를 들어, 범위를 좁힐 추가 옵션을 사용할 수 있습니다

git log -Sfoobar --since=2008.1.1 --until=2009.1.1 -- path_containing_change 

가 놀랍도록 유용하지 않습니다?

+9

이 기능만으로도 사람들을 자식으로 전환해야한다고 생각합니다. +1 –

+1

이것은 굉장한 것처럼 보이지만 path_containing_change 부분은 어떻게 작동합니까? 추가 할 때 아무 결과도 없지만 관련성이없는 커밋을 볼 수 있습니다. – Ibrahim

+1

@Ibrahim 아마도 버그입니다 ... 나는 당신이하는 것과 같은 행동을 봅니다. 나는 보통 테스트를하지만, 2 년 전 이었으므로 테스트를했는지 안했는지는 기억이 안납니다. 왜냐하면 git-log (및 man 페이지)에 대한 일반적인 구문이 나온 이후로 필자는 작업. 일반적으로 경로 인수를 추가하면 해당 경로에 영향을주는 커밋으로 제한됩니다. – Cascabel

0

git log --stat | grep 'filename'은 어떻게 축소 할 것입니까?

+1

OP에서 파일 이름을 알 수 없다는 표시가 나타납니다. 하지만 일반적으로 좋은 접근법. 물론'git log filename' 만 할 수 있습니다. – Cascabel

관련 문제