GIT

GIT : Diff 읽는 방법, 개념, 설명

A Thin Idea 2023. 1. 25. 12:00
반응형

 

git diff output

 

 

git diff

git diff 사용할 수 있는 방법, 다양한 변형, 옵션 등에 대해 얘기하기 전에 실행결과에 대해 논의해 봅시다. git diff에서 얻어지는 실행결과는 diff가 무엇이든 생성하려는 것은 항상 아주 비슷한 패턴을 따른다는 것입니다.

비교적 명확하게 일부 코드가 변경된 것을 알 수 있지만 +나 - 기호 앞에 아주 많은 것들이 있습니다. 그리고 @@같은 이상한 모양의 기호도 있습니다. 미미한 차이점을 정확하게 볼 수 있습니다.

아주 많은 것들이 있는데, 심지어 아주 미미한 변경사항에 대한 것들도 있습니다. 빨간색 글씨에 -기호가 앞에 있는 purple과 녹색 글씨에 +기호가 있는 indigo와 violet 이 diff의 결과물에서 볼 수 있는 것들이 무엇인지에 대해 알아보겠습니다.

가장 먼저 맨 위에 있는 줄을 보면, diff가 있고 --git 다음에 비교할 파일들이 있습니다. 보통 이 파일들은 실제로 동일한 파일인데, rainbow.txt의 이전 버전과 새 버전으로 두 가지 버전일 뿐입니다.

워킹 디렉토리에서 마지막으로 커밋한 버전인데 다른 파일이 될 수도 있습니다. 일반적으로, 시간이 흘렀어도 커밋들 간, 브랜치 간, 스테이지 영역과 워킹 디렉토리 사이에서는 동일한 파일입니다.

깃은 이 파일을 a, b라고 부릅니다, 첫 번째 rainbow.txt는 a가 되고, 두 번째 rainbow.txt는 b가 될 것입니다, 그리고 훨씬 더 복잡한 결과물을 얻게 됩니다. 항상 첫 번째 라인은 비교할 두 파일이 나옵니다.

 

 

File Metadata

 

File Metadata

비교하는 파일에 대한 메타데이터입니다. 사실 각각의 파일은 자신만의 해시를 갖는데 위에 표시된 것들입니다. 이것은 내부의 파일 모드 식별자입니다.

 

 

Markers

 

Markers

깃이 말하는 방식인데, 파일 a가 변경되었음을 나타내고 -기호로 표시되었고, 파일b는 +기호로 표시되어서 그 부분은 직관적이라 생각합니다. 그런 다음 이 덩어리 집합을 보게 됩니다. 만 줄짜리 파일에서 한 줄을 변경하면 git diff는 전체 만 줄을 모두 보여주지 않고 변경된 부분과 변경된 부분이 있는 콘텍스트의 앞뒤 약간을 보여줍니다.

그리고 여기서도 또 다른 변경사항이 있고 앞뒤 컨텍스트가 약간 보이고 파일은 끝입니다. 그리고 뒤에는 아무 것도 없습니다. 여기서 이 부분을 변경했고 앞 뒤에 약간의 콘텍스트가 있고 여기 또 다른 변경사항이 있고 앞 뒤에 콘텍스트가 있습니다.

 

 

Chunks

 

Chunks

이 파일 자체는 수백 줄에 달했을 수 있습니다. 하지만 변경사항 주변을 약간 선택해서 작은 덩어리로만 보여주고 있습니다. 그리고 각 덩어리들은 보시는 것처럼 헤더로 시작하는데, 다수의 덩어리들이 있습니다.

 

 

Chunk Header

 

Chunk Header

그래서 덩어리의 헤더 부분은 각 덩어리들의 시작 부분이고 양쪽에 있는 두 개의 @기호들로 그것들을 인식할 수 있으며 안에는 특이한 숫자들이 들어있습니다. 두 쌍의 숫자들이 있는데, 첫 쌍인 이 숫자들은 파일a에, 또다른 쌍은 파일b에 상응합니다.

여기 있는 -부호는 파일a을 나타내고 +부호는 파일b를 나타냅니다. 어쨌든 여기 있는 이 숫자들이 말해주는 것은 얼마나 많은 라인이 이 덩어리에서 추출되었는지 그리고 파일a에서 나온 이 덩어리가 얼마나 큰지, 파일의 어느 부분에서 시작하는지 입니다. 개인적으로 저는 여기에 많은 시간을 할애하지는 않고 보통 변경사항들을 살펴봅니다.

그래서 어떻게 읽는지 방법을 이해하면 되는데, -부호가 있는 파일a의 이 첫 번째 부분은 3번째 라인부터 4줄이 추출되었는데 이 -3은 음수를 뜻하는 것이 아니고 그냥 숫자 3입니다. -부호는 파일a를 가리킬 뿐입니다. 3번째 라인부터 시작해서 4줄입니다. 다음은 파일b인데요, 3번째 라인에서 시작해서 5줄입니다.

이것은 덩어리 자체에 포함되는 일부가 아니고 파일 유형에 따라, 만약 파이썬이나 자바스크립트같은 종류의 언어라면, 그 라인의 미리보기를 약간 보여주는 것인데 다른 때에는 또 다른 것이 되고 확실하게 그 덩어리에서 나온 것은 아닙니다. 그리고 파일의 컨텐츠가 보이는데 두 파일이 겹쳐진 것이고, -부호로 시작하는 모든 라인은 파일a에서 온 변경사항이고 +기호는 파일b로부터의 변경사항입니다.

 

 

Changes

 

Changes

이것은 같은 이름의 두 파일을 단지 다른 시점에서 비교하고 있다는 것을 말해줍니다. 해당 기호와 내용들을 통해 어떤 변화가 있었는지 유추가 가능합니다. 

반응형