답변:
log
명령을 사용하는지 또는 명령을 사용하는지에 따라 다릅니다 diff
. 이 log
경우 man git-rev-parse
문서에 있습니다.
커밋에서 도달 가능한 커밋을 제외하기 위해 접두사 ^ 표기법이 사용됩니다. 예를 들어 ^ r1 r2는 r2에서 도달 가능한 커밋을 의미하지만 r1에서 도달 가능한 커밋은 제외합니다.
이 설정 작업은 너무 자주 표시되어 속기가 있습니다. 두 개의 커밋 r1과 r2가있는 경우 (위의 스펙 수정에 설명 된 구문에 따라 이름이 지정됨), "^ r1 r2"에 의해 r1에서 도달 할 수있는 커밋을 제외하고 r2에서 도달 할 수있는 커밋을 요청할 수 있습니다. "r1..r2".
비슷한 표기법 "r1 ... r2"를 r1과 r2의 대칭 차이라고하며 "r1 r2-$ (git merge-base --all r1 r2)"가 아닌 것으로 정의합니다. r1 또는 r2 중 하나에서 도달 할 수 있지만 둘 다에서 도달 할 수없는 커밋 세트입니다.
이것은 기본적으로 두 가지 중 하나에 있지만 두 가지 모두에있는 모든 커밋을 얻음을 의미합니다.
이 diff
경우 man git-diff
문서에 있습니다.
git diff [--options] <commit>...<commit> [--] [<path>...] This form is to view the changes on the branch containing and up to the second <commit>, starting at a common ancestor of both <commit>. "git diff A...B" is equivalent to "git diff $(git-merge-base A B) B". You can omit any one of <commit>, which has the same effect as using HEAD instead.
약간 퍼지입니다. 기본적으로 그것은 다른 브랜치와 비교하여 해당 브랜치의 차이점 만 표시한다는 것을 의미합니다. 첫 번째 커밋을 가진 마지막 커밋을 찾은 다음 두 번째 커밋을 차이점과 비교합니다. 이 브랜치의 변경 사항 만 통지하지 않고이 브랜치와 비교하여 해당 브랜치의 변경 내용을 쉽게 확인할 수 있습니다.
이 방법 ..
은 다소 간단합니다.이 git-diff
경우 a git diff A B
와 동일하고 A와 B를 비교합니다.이 log
경우 B에는 있지만 A에는없는 모든 커밋이 표시됩니다.
..
하고 ...
정확하게 로그와 DIFF에 대한 교환한다 : log A..B
무엇이고 B에 병합베이스에서 변화 diff A...B
하지
git diff
.
A...B
== 의미합니까 A..B + B..A
?
git log
이 절대적으로 그렇다
이 같은 범위 커밋 사용할 때 ..
와 ...
와를 git log
, 그들 사이의 차이는 지점 A와 B에 대한, 즉이다
git log A..B
B에 A에없는 커밋이 모두 표시 되지만
git log A...B
당신에게 보여줍니다 모두 B는 A가없는 것을, 또는 다른 말로 것을는 A가 가지고있는 커밋 것을 B가 가지고 있지 않으며, 커밋 이 커밋을 모두 걸러을하는 A와 B의 주 모두, 따라서 공유 하지 않는 커밋 만 표시합니다 .
의 시각적 표현은 다음과 같습니다 git log A..B
. A에 존재하지 않는 브랜치 B에 포함 된 커밋은 커밋 범위에 의해 반환되는 것이며, 벤 다이어그램에서 빨간색으로 강조 표시되고 커밋 트리에서 파란색 원으로 표시됩니다.
에 대한 다이어그램입니다 git log A...B
. 두 분기에서 공유 하는 커밋은 다음 명령으로 반환되지 않습니다.
...
더욱 유용하게 만들기옵션을 ...
사용하여 --left-right
어느 커밋이 어느 브랜치에 속하는지 보여 줌으로써 로그 명령에서 트리플 도트 커밋 범위를 더욱 유용 하게 만들 수 있습니다 .
$ git log --oneline --decorate --left-right --graph master...origin/master
< 1794bee (HEAD, master) Derp some more
> 6e6ce69 (origin/master, origin/HEAD) Add hello.txt
위의 출력에서에 속하는 커밋 master
은 접두사가 붙고 <
,에 속하는 커밋 origin/master
은 접두사가 붙는 것을 볼 수 있습니다 >
.
언젠가 커밋 범위가 어떻게 작동하는지에 대한 내 자신의 설명을 추가 git diff
할 수는 있지만 지금 은 Git diff commit에서 더블 도트 ".."와 트리플 도트 "..."의 차이점 을 확인하고 싶을 수도 있습니다 . 범위? .