2011-08-04 5 views
14

git diff을 사용하여 두 커밋간에 diff를 얻을 수 있지만 두 커밋 모두에 존재하는 파일에 대해 diff 만 표시합니까?git diff : 두 커밋 모두에 존재하는 파일에 대해 diff 만 표시

저는 몇 주 전에 지점을 만들었습니다. 우리 주 코드는 지금까지 꽤 많이 빗나갔습니다. 결과적으로 현재 HEAD와 이전 분기의 차이점을 비교해 보면 변경된 파일이 수십 가지가되지만 대부분 노이즈에 불과합니다.

정말로보고 싶은 것은 두 분기에 존재하는 파일 만 보여주는 diff입니다. 이 작업을 수행하는 한 가지 방법은 다른 지점의 커밋을 현재 HEAD 상단에서 체리 선택하는 것이지만, 그냥 git diff을 사용하여 수행하는 방법이 있습니까?

+0

@manojlds가 잘못되었습니다. 커밋은 저장소 내용의 스냅 샷이 아닙니다. 확약 (commit)은 저장소의 내용에 대한 변경 사항을 기록한 것입니다. 커밋 A에 존재하지 않은 커밋 B에 새 파일이있을 수 있습니다. – andho

답변

21

다음 중 원하는 것을 수행합니까?

git diff --diff-filter=M commitA commitB 

--diff-filterM 옵션은 두 커밋 사이에서 수정 한 것으로 나타났습니다 파일을 포함하는 유일한 말한다 - 하나 개의 지점에 존재하거나 다른 하나는 A ("추가") 또는 D (로 선택 될 것들 "삭제됨").

git diff --name-status commitA commitB 

을 ... 그리고 git diff documentation에서이 모든에 대한 자세한 정보가있다 :

당신은 수행하여 파일이 문자 코드로 선택 될 확인할 수 있습니다.

+0

감사합니다.이 정보는 도움이됩니다 ... 내 생각이 잘못된 곳을 알 수 있습니다. 필자가 정말로 원하는 것은 다른 파일 (여전히 많은 파일)이지만, 이전 분기에서 수정 된 파일에 대한 diff는 아닙니다. –

+0

또는 다른 방법으로 말하면, 이전 브랜치를 새로운 브랜치의 꼭대기에 패치로 적용하면 어떤 변화가 생길지 정말 알고 싶습니다. 어떤 일을해야할지 모릅니다. 실행 취소하기가 쉽기 때문입니다. –

+0

@Kyralessa : 이것은 좋은 질문입니다 (그리고 희망, 답변 :)). 그래서 당신이 그것에 대해 물어볼 새로운 질문을 만들 것을 제안합니다. –