Git 교과서

코드 이력, 하나도 놓치지 마라!

버전 관리 시스템의 이해와 설치부터 커밋, 브랜치, 임시 처리, 병합, 복귀, 서브모듈, 태그까지
깃, 소스트리, 깃허브로 실습하며 기본기를 탄탄하게 다진다!

Yes24 교보문고 알라딘 인터파크 길벗

파일 애너테이션


개발하다 보면 코드를 잘못 작성해서 오류가 발생하곤 합니다. 하지만 여러 개발자와 협업하다 보 면 잘못된 코드를 찾는 것이 쉽지 않습니다.


blame


잘못된 코드가 어디서부터 시작되었는지 찾기 어렵습니다. 잘못된 내용을 찾으려면 모든 커밋 이 력을 살펴보아야 하는데, 생각보다 시간이 오래 걸립니다. 깃은 이러한 코드를 쉽게 찾을 수 있게 파일의 수정 이력을 분석합니다. 그리고 blame 기능은 커밋의 메타 정보를 코드 라인별로 같이 결합하여 출력합니다. 코드를 수정한 사람이 누구인지, 언제 수정한지를 쉽게 판별할 수 있으며, 메타 정보를 바탕으로 문제를 좀 더 쉽게 파악할 수 있습니다.


실습 환경 준비


blame 기능을 실습하기 위해 index.htm 파일을 수정한 후 커밋해 보겠습니다.

VS Code 실행

infoh@DESKTOP MINGW64 /e/gitstudy12 (master)
$ code index.htm

index.htm

<h1>hello world</h1>

등록 및 커밋

infoh@DESKTOP MINGW64 /e/gitstudy12 (master)
$ git commit -am "add h1 tag" 
[master 520aadf] add h1 tag
1 file changed, 1 insertion(+), 1 deletion(-)

VS Code 실행

infoh@DESKTOP MINGW64 /e/gitstudy12 (master)
$ code index.htm 

index.htm

<h1>hello world</h1>

깃을 이용하여 코드 이력을 관리할 수 있습니다.

infoh@DESKTOP MINGW64 /e/gitstudy12 (master)
$ git commit -am "add description" 등록 및 커밋
[master 023dade] add description
1 file changed, 2 insertions(+), 1 deletion(-)

VS Code 실행

infoh@DESKTOP MINGW64 /e/gitstudy12 (master)
$ code index.htm 

index.htm

<h1>hello world</h1>

깃을 이용하여 코드 이력을 관리할 수 있습니다. 깃은 ref를 참조하여 작업이 이루어집니다.

infoh@DESKTOP MINGW64 /e/gitstudy12 (master)
$ git commit -am "ref description" 등록 및 커밋
[master 71099d0] ref description
1 file changed, 2 insertions(+), 1 deletion(-)


blame 명령어


blame 명령어는 개별 파일에서만 동작하며, 명령어 인자 값으로 개별 파일을 전달합니다.

$ git blame 파일이름

작성한 파일의 blame을 확인해 봅시다.

infoh@DESKTOP MINGW64 /e/gitstudy12 (master)
$ git blame index.htm 메타 정보 출력
023dadec (hojin 2019-05-26 16:19:05 +0900 1) <h1>hello world</h1>
71099d05 (hojin 2019-05-26 16:31:18 +0900 2) 깃을 이용하여 코드 이력을 관리할 수 있습니다.
71099d05 (hojin 2019-05-26 16:31:18 +0900 3) 깃은 ref를 참조하여 작업이 이루어집니다.

출력 결과를 보니 각 커밋에 대한 해시 값, 작성자, 코드 등 내용도 함께 보여 주네요. blame은 누가 코드의 어느 라인을 수정했는지 파악할 때 유용합니다.


옵션 활용


소스 코드의 용량이 클 때는 이력 정보도 많이 출력됩니다. 이때는 -L 옵션을 사용하여 파일의 특 정 영역만 지정할 수 있습니다.

$ git blame -L 시작줄, 마지막줄 파일이름

파일을 수정한 히스토리를 출력해 보겠습니다.

infoh@DESKTOP MINGW64 /e/gitstudy12 (master)
$ git blame -L 2,3 index.htm 메타 정보 필터링
71099d05 (hojin 2019-05-26 16:31:18 +0900 2) 깃을 이용하여 코드 이력을 관리할 수 있습니다.
71099d05 (hojin 2019-05-26 16:31:18 +0900 3) 깃은 ref를 참조하여 작업이 이루어집니다.

blame 기능은 파일에서 특정한 수정 사항 및 커밋들을 찾는 데 매우 유용합니다. 개발 과정에서 만든 수많은 코드 중 수정한 부분만 쉽게 찾아낼 수 있습니다.

blame 명령어는 옵션을 사용하면 좀 더 다양하게 검색할 수 있습니다.

  • -e: 사용자 이름 대신 이메일을 출력합니다.
  • -w: 공백 문자를 무시합니다.
  • -M: 같은 파일 내에서 복사나 이동을 감지합니다.
  • -C: 다른 파일에서 이동이나 복사된 것을 감지할 수 있습니다.