Appia의 IT세상

[깃, Git] Git diff의 결과 읽는 방법 본문

Development/GIT

[깃, Git] Git diff의 결과 읽는 방법

Appia 2023. 11. 27. 07:52
반응형

[깃, Git] Git diff의 결과 읽는 방법

[깃, Git] Git diff의 결과 읽는 방법

 

앞선 포스팅에서는 git diff명령어에 대해서 매우 간단히 살펴봤습니다. 실제, 개념정도의 의미에서 접근을 해봤습니다. 앞 포스팅에서도 언급을 하였지만, 이 git diff의 경우 git repository에 아무런 영향을 끼치지 않습니다. 단, 순수하게 정보만 출력하는 명령어입니다. 이렇게 정보를 출력하는 명령어에서 가장 중요한 것을 결과를 읽는 방법입니다. 그래서 이번 포스팅에서는 git diff의 결과를 읽는 방법에 대해서 이야기를 해보고자 합니다. 

 

[깃, Git] Git 차이점 확인하는 diff 명령어 사용하기

 

[깃, Git] Git 차이점 확인하는 diff 명령어 사용하기

[깃, Git] Git 차이점 확인하는 diff 명령어 사용하기 이전 포스팅에서는 Git merge Conflict(머지충돌)을 해결하는 방법에 대해서 살펴봤습니다. 앞선 포스팅에서 아마도 느끼셨겠지만, Git Merge 과정에서

appia.tistory.com

 

그럼 간단한 예시를 한번 보도록 하겠습니다. git diff의 명령어를 실행하면 다음 화면과 같은 결과를 볼 수 있을 것입니다. 

git diff 명령어 실행 결과

 

위에서의 결과를 보면, 다양한 단어들이 사용하고 있습니다. 가장 쉽게, +, -, @@등과 같은 이상한 단어를 사용하고 있다는 것을 알 고 있습니다. 그리고 -기호에는 빨간색 글씨, +기호에는 녹색 신호입니다. 실제 이 부분만 가지고 정확하게 git diff의 결과를 해석하는데에는 한계가 있습니다.  그럼 위의 명령어를 바탕으로 각 부분에 대해서 이야기를 해봅시다. 

 

그럼 가장 먼저 보이는 부분을 보겠습니다. 흔히들 이야기 하는 "diff --git" 부분입니다. 

git diff 비교 파일 및 각 파일의 헤시

 

먼저, 가장 먼저 나오는 부분은 비교할 파일을 명시하고 있습니다. 

diff -- git [비교할 파일]

 

대체로 비교할 파일은 동일한 파일을 입니다. 깃에서는 이 파일에 대해서 a, b라고 부릅니다.  첫번째 줄은 항상 비교할 두파일에 대해서 명시를 하고 있습니다.  

 

그리고, 두번째 라인은 크게 중요하지 않지만, 각 파일에 대한 헤시입니다. 원래 git에서는 commit에 대한 헤시를 가지고 있는데, 각 파일에 대한 헤시도 가지고 있다고 생각하시면 됩니다. 

 

그리고, 다음 표시는 2줄로 표시가 됩니다. 

비교 파일

위에서 첫번째 줄에 명시한, 비교할 파일에 대해서 어떤 기호를 가질 것인지에 대해서 명시를 하고 있습니다. -부호일 경우에, a파일이 변경이 되었음 나타내고, +부호일 경우 b파일이 변경이 되었음을 나타냅니다. 

 

그러면, 이제는 chunk 에 대해서 보고자 합니다. chunk를 보기에 앞서서 가장 먼저 확인해야할 것이 chunk header입니다. chunk header는 다음과  같은 부분입니다. 

chunk 헤더

chunk header의 경우 @@ 로 시작해서, @@로 끝납니다. 간단히 보면, 다음과 같은 형태입니다. 

@@ -1,4 +1,5 @@

 

여기에서 보이는 -, +는 음수 양수가 아닙니다. 그냥 -는 a부분을 나타내고, +부분은 양수 부분을 나타냅니다. 그러면 위의 예시를 바탕으로 살펴보면, -1,4의 경우는 a는 1번째 줄 부터 4번째 줄까지 표시를 하고 +1,5부분은 b는 1번째 줄 부터 5번째 줄까지 표시를 한다는 것입니다. 그리고 종종 chunk header을 끝내는 @@ 뒤에 텍스트가 붙는 경우가 있는 데, 이 부분은 무시하셔도 됩니다. 

 

chunk 예시를 간단히 들면서 한번 이야기를 해보도록 하겠습니다. 다음 보이는 빨간 상자가  chunk라고 보시면 됩니다. 

chunk 예시

여기에서 앞에 -표시가 있고 빨간색 글씨로 되어 있는 부분은 a에는 있던 부분으로 b에서는 삭제된 부부입니다. 긜고, +부분인 ten은 b에서 추가된 것입니다. -기호가 있는 것은 b에는 없고, a에만 있는 것이고 +기호로 되어 있는 것은 a에는 없고 b에만 있는 것으로 보면 됩니다. 

 

위에서 보시는 바와 같이 number.txt라는 파일의 전체 내용을 보여주지는 않습니다. 변경점이 있는 부분과 위 아래, 약간씩을 보여주는 것일 일반적입니다. 그리고 최초 그림에서 봤듯이 git diff의 경우 한개의 파일만 보여주지 않고, 여러개의 파일들을 보여줍니다. 다음의 예시를 한번 보겠습니다. 

여러개의 파일들이 git diff의 비교 결과

위에서와 같이 여러개의 chunk가 한번에 출력이 될 수 있습니다. 상기에서 보이는 부분과 같이 각 chunk에서는 git diff에서 여러개의 파일에 대해서 차이점을 확인할 수 있습니다. 

이번 포스팅에서는 [깃, Git] Git diff의 결과 읽는 방법라는 주제로 포스팅을 해봤습니다. 실제 git diff를 사용함에 있어서 가장 중요한것을 나온 결과를 해석할 수 있어야 하는 점입니다. 실제 저의 경우에는 이 부분을 자동화에 활용하기 위해서 정확하게 인지할 필요가 있었습니다. 물론 처음부터 완벽할 수 없지만, 계속 하다보면, 이 부분에 대해서 잘 해석할 수 있을 것입니다. 저와 같이 자동화나, 다른 사람들과 같이 다양한 목적으로도 사용이 될 수 있습니다. 혹 궁금하신 점이나 문의 사항이 있으시면 언제든지 댓글 및 방명록에 글 남겨주시길 바랍니다. 감사합니다. 

 

반응형
Comments