2014-11-05 2 views
0

첫째, 파일 abc.java가 있으며 코드 10 줄이 있습니다. 그런 다음 동일한 커밋에서 abc.java에서 해당 행을 제거하고이를 xyz.java에 저장합니다. git blame 또는 git log이 파일 전체에서 해당 행의 기록을 추적 할 수있는 방법이 있습니까?특정 파일이 다른 파일에서 복사 된 것을 추적 할 수 있습니까?

내가 원한 것은 다음과 같습니다. 나는 git log -L100,110:xyz.java (see -L documentation)을하고 싶고, xyz.java에서 10 행을 만지는 모든 커밋을 볼 수있을뿐만 아니라 abc.java에있을 때 그 행을 변경 한 커밋을 모두 볼 수 있습니다.

답변

0

짧은 답변 : 제

힘내는 (은 모든 파일의 해시를 생성합니다) 개별적으로 모든 파일을 추적 할 수 있습니다. 힘내는 파일/폴더의 이름이 바뀌 었는지 (동일한 해시를 가짐) 가정합니다. 이것은 개별 선을 추적하는 것이 불가능하다는 것을 의미합니다.

+0

흠. 정확한지 확실하지 않습니다. Git은 두 개의 얼룩 (blob)을 취하여 둘 사이의 유사성 백분율이 어느 임계 값을 능가 하는지를 결정함으로써 알고리즘 적으로 이름 변경을 감지 할 수 있습니다. 따라서 이름을 바꾼 파일이 정확히 동일한 파일 및 해시 일 필요는 없습니다. [git log]에 대한 "--find-renames"인수 (http://git-scm.com/docs/git-log)를 참조하십시오. 어느 쪽의 방법이라도, 내가하는 것이 가능하지 않은 것처럼 보인다. 나는 이름 바꾸기를하거나 파일 내의 줄을 따라갈 수 있지만, 동시에 둘다 할 수는 없다. (즉,'git log --follow -L ...'는 에러를 던진다. –