개발관련/Git

Git 커밋 범위에서 이중 점 “..”과 삼중점 “…”의 차이점

Rateye 2021. 11. 18. 10:08
728x90
반응형
질문 : Git 커밋 범위에서 이중 점“..”과 삼중점“…”의 차이점은 무엇입니까?

일부 Git 명령은 커밋 범위를 사용하고 하나의 유효한 구문은 두 개의 점 .. 으로 두 개의 커밋 이름을 구분하는 것이고 다른 구문은 세 개의 점을 사용하는 ...

둘의 차이점은 무엇입니까?

답변

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 --not $ (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 git diff AB 와 동일하고 A와 B를 비교합니다. log 경우 B에 있지만 A에는없는 모든 커밋을 표시합니다.

출처 : https://stackoverflow.com/questions/462974/what-are-the-differences-between-double-dot-and-triple-dot-in-git-com
728x90
반응형