삭제 된 파일 foo에 대해 "git log -‌- foo"가 작동하지 않는 이유는 무엇입니까?


89

내 저장소가 다음과 같이 변경되었습니다.

  1. ... 관련되지 않은 커밋 ...
  2. foo100 줄의 내용으로 새 파일 커밋
  3. ... 개입 커밋, 일부는 접촉 foo...
  4. foo기존 파일의 상단 bargit rm foo동일한 커밋에 의 내용을 삽입하십시오.
  5. ... 더 많은 관련없는 커밋 ...

이제 삭제 된 파일의 로그를보고 싶습니다 foo. SO를 포함하여 내가 읽은 모든 것은 내가 할 수 있어야한다고 git log -- foo말하지만 그 명령은 출력을 생성하지 않습니다.

삭제가 포함 된 커밋을 찾으면 로그를 볼 foogit log 1234abcd -- foo있으므로 경로 foo가 문제가 아니라고 생각 합니다. 또한 git merge-base HEAD 1234abcd출력 1234abcd[...], 그래서 커밋에서 도달 할 수 있음을 증명해야한다고 생각합니다 HEAD. foo내 작업 트리 에는 파일이 없습니다 (삭제되었으므로 분명함). OS X에서 Git 1.7.1.1 사용.

git log -- foo저에게 효과 가 없으며 어떻게 해결할 수 있습니까? 감사!


5
git log --follow -- foo또는 시도 했습니까 git log --follow -M -- foo? (이름 변경 감지 강제)
VonC

1
젠장, 내가 시도 않았다 --follow읽기 - 그러나 history나는 경로 무효를 만들고, 그것을 시도 할 때 다른 cd'ed 때문에 내가 가진 참조하십시오. git log --follow -- foo올바른 출발점에서 시도했을 때 일했습니다. Git은 일종의 이름 바꾸기로 롤링 foo을 고려한 것 같습니다 bar. 어쨌든 감사합니다! 답변으로 다시 게시 해 주시면 감사하겠습니다.
user385804

1
질문 제목에서 --변경되는 짜증나는 ...
Cascabel 2010-07-07

답변:


118

man 페이지에 다음과 같이 설명되어있는 의 --follow옵션 을 사용하려고합니다 git log.

Continue listing the history of a file beyond renames.

실제로 이렇게하면 이름이 변경된 파일의 기록을 볼 수있을뿐만 아니라 작업 트리에 더 이상없는 파일의 기록을 볼 수도 있습니다. 따라서 사용해야하는 명령은 다음과 같아야합니다.

git log --follow -- foo

최신 정보:

Git 2.9 이상에서는 이제 모든 git diffgit log명령에 대해 기본적으로이 기능을 활성화했습니다 .

기본적으로 "git diff"및 "git log"제품군의 최종 사용자 용 Porcelain 수준 명령은 이름 변경 감지를 활성화합니다. "diff.renames"구성 변수를 사용하여이를 비활성화 할 수 있습니다.

x-yuri에게 감사드립니다!


1
--follow부품 없이 저에게 효과적이었습니다 . 나는 단지 --. 나는 달리고있다 git-2.9.0.
x-yuri
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.