Programming

Git 커밋 범위에서 더블 도트“..”와 트리플 도트“…”의 차이점은 무엇입니까?

procodes 2020. 2. 27. 22:28
반응형

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


힘내 로그와 커밋 범위 사용

이 같은 범위 커밋 사용할 때 .....와를 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"다이어그램나무 1

에 대한 다이어그램입니다 git log A...B. 두 분기가 공유 하는 커밋은 다음 명령으로 반환되지 않습니다.

 "git log A ... B"다이어그램나무 2

트리플 도트 커밋 범위를 ...더욱 유용하게 만들기

옵션을 ...사용하여 --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할 수는 있지만 지금 은 Git diff commit에서 더블 도트 ".."와 트리플 도트 "..."의 차이점 을 확인하고 싶을 수도 있습니다 범위? .

또한보십시오

참고 URL : https://stackoverflow.com/questions/462974/what-are-the-differences-between-double-dot-and-triple-dot-in-git-com



반응형