기록이없는 힘내 비난


88

msysgit을 사용하여 파일에서 git blame을 실행하면 항상 다음과 같은 종류의 출력물이 나타납니다.

00000000 (Not Committed Yet 2011-01-09 11:21:30 +0200   1) package co
00000000 (Not Committed Yet 2011-01-09 11:21:30 +0200   2) {
00000000 (Not Committed Yet 2011-01-09 11:21:30 +0200   3)      impor
00000000 (Not Committed Yet 2011-01-09 11:21:30 +0200   4)      impor
00000000 (Not Committed Yet 2011-01-09 11:21:30 +0200   5)      impor
00000000 (Not Committed Yet 2011-01-09 11:21:30 +0200   6)      impor
00000000 (Not Committed Yet 2011-01-09 11:21:30 +0200   7)      impor

즉, 모든 행이 아직 커밋되지 않음으로 표시됩니다.

나는 많은 커밋을 가진 많은 파일에서 이것을 시도했습니다-항상 동일한 결과. 또한 상대 / 전체 경로를 사용해 보았지만 차이가없는 것 같습니다.

TortoiseGit의 비난을 사용하려고 할 때 항상 모든 줄이 첫 번째 커밋에서 마지막으로 커밋 된 것으로 표시됩니다.

대체 텍스트

내가 말했듯이이 파일의 역사에는 실제로 수십 개의 커밋이 있다고 생각했습니다 ..

아이디어?

편집-추가 정보

  • Git blame은이 저장소가 호스팅되는 GitHub에서 잘 작동합니다.
  • Linux 시스템에 복제하고 거기에서 비난을해도 잘 작동합니다.
  • msysgit에서만 작동하지 않는 것 같습니다.

나 에게이 문제는 저장소가 인식 한 경로에 따라 심볼릭 링크 된 경로를 사용하여 발생했기 때문에 파일이 완전히 새로운 것이라고 생각했습니다.
Kzqai

참고 : git 2.0.1 (2014 년 6 월 25 일)부터 git blame은 모든 "아직 커밋되지 않음"줄보고를 중지해야합니다. 보기 내 대답은 아래
VonC

메일 링리스트 : git.661346.n2.nabble.com/… Linux에서도 발생합니다.
Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功

이것은 WSL에도 영향을 미치므로 태그를 추가했습니다. 괜찮기를 바랍니다.
mikemaccana

답변:


127

git blame file.txt작업 복사본에서 file.txt의 버전을 비난합니다. file.txt에 저장소에 Windows-newlines (CRLF)가 있고.이있는 core.autocrlf = true경우 file.txt의 모든 줄은 서로 다른 것으로 간주되며 git blame아직 커밋되지 않은 것으로보고됩니다 .

이유는 왜 git blame <my_branch>(또는 더 나은 git blame HEAD, 어떤 지점 당신이있어 상관없이 작동하는), 작동 아직 커밋되지 않은 라인에 대한 가능성이 없다 그래서이 작업 복사본 버전을 비난하지 않는다는 점입니다.


118
git blame -w원하는 경우 여전히 작업 복사본에 대해 비난 할 수 있도록 공백을 무시
카일 Heironimus

13
Git blame -w는 별도의 답변이어야하며 허용되는 답변이어야합니다;). 댓글없이 받아 들여진 대답은 나에게 쓸모가 없었습니다.
Guillaume Perrot

55

해결책을 찾았습니다-매우 이상합니다.

이것을 실행하면 :

git blame file.txt

위에 게시 된대로 역사가 깨졌습니다.

대신 이렇게하면 :

git blame my_branch file.txt

효과가있다!

AFAICS 사용에 분기 이름이 필요하지 않기 때문에 이것은 매우 이상합니다.

$ git blame
usage: git blame [options] [rev-opts] [rev] [--] file

7
이것은 나를 위해 작동합니다. 게시 해 주셔서 감사합니다. 이 질문을 답변 IMO로 표시해야합니다.
wes

이것은 msysgit에서 나를 위해 작동하지만 파일 이름은 대소 문자를 구분합니다. 그래서 나는 쓸 수 git blame mybranch cmakelists.txt있고 실패 할 것입니다. 그러나 내가 쓰면 git blame mybranch CMakeLists.txt작동합니다.
루프

동의합니다. 비난은 내가 지점을 지정할 때까지 역사를 보여주지 않았고 문서와 일치하지 않습니다.
josephdpurcell 2013

OMG, 비난이 너무 무너졌습니다.
Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功

8

git 2.0.1 (2014 년 6 월 25 일)부터 git blame은 모든 "Not Yet Committed"행보고를 중지해야합니다.

brian m의 commit 4d4813a (2014 년 4 월 26 일) 참조 칼슨 ( bk2204) .
(Merged by Junio ​​C gitsterHamano -- in commit e934c67 , 06 Jun 2014)

blame: 파일을 올바르게 처리합니다. autocrlf

파일 CRLF에 다음과 같은 저장소의 줄 끝이 포함 된 경우core.autocrlf=input 으로, 다음 항상 표시 비난 선 " Not Committed Yet가 수정되지 않은하더라도,". 설정에
관계없이 비난이 올바르게 작동하도록 가짜 커밋을 만들 때 줄 끝을 변환하지 마십시오 autocrlf.


8
나는 아직도 자식 V2.1.3에 문제가
DBedrenko

나는 자식 버전 2.16.1.windows.1에 문제가 있습니다
Radon8472

@ Radon8472 git config -l출력 과 함께 문제를 설명하는 새로운 질문을 추가 할 수 있습니까?
VonC

1

또 다른 가능성 : 대소 문자 구분 파일 이름 오타

나는 git blame file.txt와 동일한 문제가 있었고 file.txt로 대소 문자를 구분하는 파일 이름 오타를 만들었다는 것을 깨달았습니다.

예를 들어 File.txt로 변경하고 my_branch를 지정하지 않아도 예상되는 결과를 얻었습니다. git blame File.txt

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.