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

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

  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저에게 효과 가 없으며 어떻게 해결할 수 있습니까? 감사!



답변

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에게 감사드립니다!


답변