programing

Gitdiff 커밋 범위에서 이중 점 ""과 삼중 점 "..."의 차이점은 무엇입니까?

abcjava 2023. 6. 10. 07:56
반응형

Gitdiff 커밋 범위에서 이중 점 ""과 삼중 점 "..."의 차이점은 무엇입니까?

다음 명령의 차이점은 무엇입니까?

git diff foo master   # a 
git diff foo..master  # b
git diff foo...master # c

diff 매뉴얼에서는 다음과 같이 설명합니다.

분기 비교

$ git diff topic master    <1>
$ git diff topic..master   <2>
$ git diff topic...master  <3>
  1. 주제의 추가 정보와 마스터 분기 간의 변경 사항입니다.
  2. 위와 같습니다.
  3. 주제 분기가 시작된 이후 마스터 분기에서 발생한 변경사항입니다.

하지만 완전히 이해가 가지 않습니다

이미 이러한 이미지를 만들었기 때문에 다른 답변에 사용할 가치가 있다고 생각했습니다. 비록 차이에 대한 설명은 있지만... 및 (점) 및...(점-점-점)은 manojlds의 답변과 본질적으로 동일합니다.

git diff일반적으로 syslog는 커밋 그래프에서 정확히 두 점 사이의 트리 상태 간의 차이만 보여줍니다...그리고....의표기의 git diff다음과 같은 뜻이 있습니다.

# Left side in the illustration below:
git diff foo..bar
git diff foo bar  # same thing as above

# Right side in the illustration below:
git diff foo...bar
git diff $(git merge-base foo bar) bar  # same thing as above

gitdiff에

다른말하면로,하면,git diff foo..bar▁the같▁▁is▁와 정확히 같습니다.git diff foo bar 다 두 가지 입니다.foo그리고.bar 에반면은,git diff foo...bar과 "기저분"의 끝 .bar에 이 는 병합기일로두마공커통지된로이다작니에서 작업한 변경 .bar를 도입했지만, 지금까지 수행된 모든 작업은 무시했습니다.foo그 사이에

당신이 알아야 할 것은 그것뿐입니다...그리고....의표기의 git diff하지만...


여기서 흔히 볼 수 있는 혼란의 원인은..그리고....다음과 같은 명령에 사용될 때 미묘하게 다른 것들을 의미합니다.git log커밋 집합을 하나 이상의 인수로 예상합니다.(이러한 명령은 모두 인수에서 커밋 목록을 구문 분석하는 데 사용됩니다.)

..그리고....위해서git log다음과 같이 그래픽으로 표시할 수 있습니다.

Git 로그에 대한 커밋 범위를 지정하는 다양한 방법에 대한 그림

그렇게,git rev-list foo..bar 줍니다.bar에 있지 않습니다.foo 에반면은,git rev-list foo...bar▁either▁that에 커밋이 있습니다.foo 또는 bar하지만 둘 다는 아닙니다.세 번째 다이어그램은 두 분기를 나열하면 두 분기 중 하나 또는 둘 모두에 있는 커밋을 얻을 수 있음을 보여줍니다.

어쨌든, 저는 모든 것이 약간 혼란스럽다는 것을 발견했고, 커밋 그래프 다이어그램이 도움이 된다고 생각합니다:)

◦ 예를 들어 병합 충돌을 해결할 때부터 "일반적으로"라고만 말합니다.git diff3방향 병합을 보여줍니다.

통합 버전의.....diff vs log로

Diff vs Log &... vs.

git diff foo master의 팁(헤드) 커밋 간 차이foo그리고.master.

git diff foo..master같은 일을 하는 또 다른 방법.

git diff foo...master공통 조상과의 차이(git merge-base foo masterfoo그리고.master의 끝까지master다시 말해서, 그것은 단지 변화를 보여줍니다.master분기는 와의 공통 조상 이후로 도입되었습니다.foo.

학습 내용.GitHub "합병으로 인한 결과" 예제(아카이브)는 두 가지를 사용하는 시기를 설명합니다.

예를 들어, 'dev' 분기를 만들고 파일에 함수를 추가한 다음 'master' 분기로 돌아가서 README에서 줄을 제거한 다음 다음과 같은 작업을 실행합니다.

$ git diff master dev

첫 번째 파일에서 함수가 추가되고 README에 줄이 추가되었음을 알려줍니다.왜냐고요? 왜냐하면 README는 분기에 여전히 원래 줄이 있지만 '마스터'에서는 제거했기 때문입니다. 따라서 스냅샷을 직접 비교하면 'dev'가 추가한 것 같습니다.

당신이 정말로 비교하고 싶은 것은 당신의 분기가 갈라진 이후 'dev'가 무엇을 변화시켰는가 하는 것입니다.이를 위해 Git은 멋진 속기를 가지고 있습니다.

$ git diff master...dev
git diff foo master

의 차이점을 보여줍니다.foo그리고.master그 시점에서 분기.

git diff foo..master

또한 두 시스템 간의 차이점을 보여줍니다.foo그리고.master해당 시점의 분기(위와 동일).

git diff foo...master

이와 같은 가 모두 됩니다.foo가지는 로부터 만들어졌습니다.master지점과 그 이후

따라서 처음 두 명령은 동일하고 마지막 명령은 diff 이력에 대한 더 넓은 시야를 보여줍니다.

깃 로그 트리

맨 위 그림은 맨 아래 그래프 트리와 동일합니다.

A0 <- A1 <- A2 <- A3 (master)
   \
    C0 <- C1 (test)

사진 한 장이 천 마디의 가치가 있다, 그 차이는.. ... ^아래에 나와 있습니다.

$ git log master..test
# output C0 C1

$ git log ^master test
# output C0 C1

$ git log master…test
# output A1 A2 A3 C0 C1

언급URL : https://stackoverflow.com/questions/7251477/what-are-the-differences-between-double-dot-and-triple-dot-in-git-dif

반응형