2011-08-02 9 views
10

단일 명령을 통해 커밋 ID 세부 정보와 함께 파일의 diff 세부 정보를 얻을 수있는 방법이 있습니까? 현재 "git diff tag1..tag2"는 두 태그 사이의 전체 코드 변경을 제공하지만 커밋 ID 및 커밋 이유는 제공하지 않습니다. "자식 로그"를 사용할 때 두 태그를 비교할 때 걱정하지 않는 변경 사항을 전체 커밋 변경으로 제공합니다.단일 명령으로 커밋 변경과 함께 git diff를 얻는 방법은 무엇입니까?

+0

당신이 귀하의 질문에 조금 명확히 수 : 염두에두고

, 나는이 문제를 추측하고있어 당신이 찾고있는 것을 아마? "커밋 ID와 함께 파일의 diff 세부 정보"란 무엇을 의미합니까? –

+0

확실합니다 .. 예를 들어 git diff 명령은 다음과 같습니다. diff --git/opengl/libagl/egl.cpp b/opengl/libagl/egl.cpp 색인 662a1fa..64f9766 100644 --- a/opengl /libagl/egl.cpp +++ b/opengl/libagl/egl.cpp 정확한 코드 변경 (더하기/빼기). 하지만이 변경 사항에는 동일한 diff 파일에 원하는 커밋 ID와 커밋 이유도 있습니다. 그래서 생각은 내가 변화를 보게된다면 그 이유도 알 수 있다는 것입니다. 이러한 세부 사항은 "git log"를 통해 얻을 수 있지만 "git log tag1..tag2"를 실행하면 git diff의 일부가 아닌 파일로 완전히 다른 결과를 얻게됩니다 – Vinz

+0

메시지를 커밋하고 해시 및 전체 diff를 두 지점 너의 커밋 트리에? –

답변

16

하지만 이러한 변화는 내가 같은 DIFF 파일 내가 여기에 약간의 혼란이 있다고 생각

에서 원하는 ID를 커밋 커밋 이유가있다. git-diff는 하나의 커밋과 다른 커밋 사이의 차이를 출력합니다. 그 차이는 커밋 하나만이 아니며, 지정한 범위의 일련의 커밋을 나타냅니다 (예제에서 662a1fa..64f9766). 따라서 여러 커밋 ID와 메시지, 태그가 멀리 떨어져있는 경우 수천 개가 될 수도 있습니다.

git diff가 관련된 모든 커밋 메시지를 출력하는 경우 diff의 어느 부분이 각 커밋 ID 및 커밋 메시지와 관련되어 있는지 알려주지 못할 수 있습니다. 이것이 git log가 존재하는 이유입니다.

힘내 로그는 지정한 범위에서 차례대로 각 커밋을 표시하므로 커밋 메시지가 표시됩니다.

git-diff는 a와 z의 차이점을 보여줍니다.
git-log는 z가되기까지 걸린 여행을 보여줍니다.

git log --color -p --full-diff tag1..tag2

관련 문제