2016-11-30 3 views
11

나는 repo를 만들고, 그 안에 파일을 만들고, 파일에 내용을 넣고, 파일을 커밋했습니다. 자, 나는 커밋의 차이점을보고 싶습니다. 추가 된 파일과 추가 된 파일을 이상적으로 보여 주어야합니다.첫 번째 커밋의 Git diff를 얻는 방법은 무엇입니까?

그러나 git diff HEAD^ HEADfatal: ambiguous argument 'HEAD^': unknown revision or path not in the working tree.을 반환합니다. 이는 아마도 이것이 repo에 대한 첫 번째 커밋 이었기 때문입니다.

어떻게 해결할 수 있습니까? 첫 번째 커밋에서 추가 된 파일의 diff를 볼 수있는 방법이 있습니까?

+1

'git show'가 작동 할 수 있습니다. 그러나 첫 번째 diff는 항상 null에서 전체 내용입니다. – ElpieKay

+0

@ElpieKay 그게 작동하지만 커밋 요약도 포함됩니다. 커밋 요약없이 diff만을 출력하도록 할 수있다. 만약'git show '를하면? –

+0

'git show --pretty = %% | sed 1,2d'. '%%'는 한 줄만 출력하는 자리 표시 자일 수 있습니다. '% h','% t'. – ElpieKay

답변

38

당신은 할 수 있습니다 :

git diff 4b825dc642cb6eb9a060e54bf8d69288fbee4904 HEAD 

4b825dc642cb6eb9a060e54bf8d69288fbee4904는 망할 놈의 "빈 나무"의 ID이며 모든 저장소에서 항상 사용할 수 있습니다.

+3

@CharlesBaley, Cool,이 sha-1 코드는 어디서 구할 수 있습니까? – gzh

+0

니스,이 문서화 된 문서 또는 향후에 사라질 수있는 불안정한 기능에 의존하고 있습니까? –

+2

git이 sha1을 계속 사용하는 동안 빈 트리의 id는 변경되지 않습니다. 가독성을 높이기 위해'$ (printf ''| git hash-object -t tree --stdin)'을 사용할 수 있습니다. –