Git 두 가지 비교

Git Compare Two Branches



거의 모든 버전 제어 시스템에는 분기 옵션이 있습니다. 그러나 Git은 빠른 분기 기능으로 유명합니다. Git 브랜치는 가볍습니다. 따라서 분기에 대한 성능 저하가 최소화되고 개발 팀은 가능한 한 많이 분기 및 병합하는 것이 좋습니다. 그러나 여러 브랜치로 작업할 때 차이점을 비교하고 대조할 수 있는 것이 중요합니다. 이 튜토리얼에서는 다양한 브랜치와 커밋을 비교하는 방법을 알아보기 위해 워크플로를 살펴볼 것입니다. 먼저 다음 상황을 설정해 보겠습니다.

C00 => C01 => C03 => C06(마스터)









C02 => C04 => C05(개발)



다음 단계를 수행했습니다.





  • C00: 추가된 hello_world.py(마스터 분기)
  • — 개발 분기 생성
  • C01: 두 번째 hello(마스터 분기)를 추가하도록 hello_world.py를 수정했습니다.
  • C02: 개발 분기를 추가하도록 수정된 hello_world.py가 Hello(개발 분기)라고 표시됨
  • C03: 추가된 readme.txt(마스터 분기)
  • C04: 개발 분기를 추가하도록 수정된 hello_world.py가 Hello라고 다시 표시됨(개발 분기)
  • C05: info.txt 추가(개발 분기)
  • C06: 두 번째 줄(마스터 분기)을 추가하도록 readme.txt를 수정했습니다.

모든 커밋 후에 '마스터' 분기에는 다음 파일이 있습니다.

hello_world.py
readme.txt



그리고 'development' 브랜치에는 다음 파일이 있습니다.

hello_world.py
정보.txt


두 가지의 머리 비교

분기 이름을 사용하여 두 분기의 머리를 비교할 수 있습니다.

$자식 차이마스터 .. 개발

차이 --가다에게/hello_world.py b/hello_world.py
인덱스 e27f806..3899ed3100644
---에게/hello_world.py
+++ ㄴ/hello_world.py
@@-2,7+2,7 @@

데프 메인():
인쇄('먼저 안녕하세요!')
- 인쇄('두 번째 안녕!')
-
+ 인쇄('개발 지점이 Hello'라고 말합니다.)
+ 인쇄('개발부서 다시 Hello')
만약__이름__ =='__기본__':
기본()
차이 --가다에게/info.txt b/정보.txt
새로운파일방법100644
인덱스 0000000..0ab52fd
--- /개발자/없는
+++ ㄴ/정보.txt
@@-0,0+1 @@
+새로운 정보
차이 --가다에게/readme.txt b/readme.txt
삭제파일방법100644
인덱스 e29c296..0000000
---에게/readme.txt
+++/개발자/없는
@@-1,2+0,0 @@
-1readme.txt의 첫 번째 줄
-2readme.txt의 두 번째 줄

diff 명령은 재귀적으로 변경 사항을 확인합니다. 다음 diff를 실행했습니다.

diff –git a/hello_world.py b/hello_world.py
diff –git a/info.txt b/info.txt
diff –git a/readme.txt b/readme.txt

여기서 '''는 '마스터' 분기를 나타내고 'b'는 개발 분기를 나타냅니다. 'a'는 항상 첫 번째 매개변수에 할당되고 'b'는 두 번째 매개변수에 할당됩니다. /dev/null은 분기에 파일이 없음을 의미합니다.


커밋 비교

이 예에서 '마스터' 분기에는 다음 커밋이 있습니다.

$자식 상태
브랜치 마스터에서
커밋할 것이 없음, 작업 디렉토리 정리

$자식 로그 --한 줄
caa0ddd C06: 두 번째 줄을 추가하도록 readme.txt를 수정했습니다.(마스터 브랜치)
efaba94 C03: readme.txt 추가(마스터 브랜치)
ee60eac C01: 두 번째 hello를 추가하도록 hello_world.py를 수정했습니다.(마스터 브랜치)
22b4bf9 C00: hello_world.py 추가(마스터 브랜치)

개발 분기에는 다음과 같은 커밋이 있습니다.

$자식 상태
지점 개발에 대해
커밋할 것이 없음, 작업 디렉토리 정리

$자식 로그 --한 줄
df3a4ee C05: info.txt 추가됨(개발 지점)
0f0abb8 C04: 개발 분기를 추가하도록 수정된 hello_world.py가 Hello라고 다시 표시됨(개발 지점)
3f611a0 C02: 개발 분기를 추가하도록 수정된 hello_world.py가 Hello라고 표시됨(개발 지점)
22b4bf9 C00: hello_world.py 추가(마스터 브랜치)

C01 및 C02 커밋에 대해 hello_world.py를 비교하려고 한다고 가정합니다. 해시를 사용하여 비교할 수 있습니다.

$자식 차이ee60eac:hello_world.py 3f611a0:hello_world.py

차이 --가다에게/ee60eac:hello_world.py b/3f611a0:hello_world.py
인덱스 e27f806..72a178d100644
---에게/ee60eac:hello_world.py
+++ ㄴ/3f611a0:hello_world.py
@@-2,7+2,7 @@

데프 메인():
인쇄('먼저 안녕하세요!')
- 인쇄('두 번째 안녕!')
+ 인쇄('개발 지점이 Hello'라고 말합니다.)

만약__이름__ =='__기본__':
기본()

동일한 원칙을 사용하여 동일한 분기 내에서 커밋을 비교할 수도 있습니다.


시각적 병합 도구

텍스트 기반 비교를 보는 것은 어려울 수 있습니다. Git을 설정하면 difftool 다음과 같은 시각적 병합 응용 프로그램으로 DiffMerge 또는 비욘드비교 , 차이점을 더 잘 볼 수 있습니다.

추가 연구:

참조: