커밋(commit) 다루기

Joon_yyy's velog·2022년 10월 31일
0

Git 정복하기

목록 보기
3/5

3일차 커밋 다루기🧐

커밋 히스토리 살펴보기

💻Codeit에서 교육하는 커리큘럼을 바탕으로 정리하였다.
커밋 히스토리란, 앞서서 작업했던 커밋들을 살펴보는 것을 말한다.

그렇다면 커밋 히스토리를 보는 이유는 무엇일까?
바로 커밋 히스토리를 보면 프로젝트 디렉토리에서 일어난 변화를 한번에 볼 수 있기 때문이다.

$ git log

커밋들이 출력되고 가장 오래된 커밋부터 최근 커밋까지 아래에서 순차적으로 터미널에 나타난다. 커밋들이 출력된 것을 볼수 있는데, 커밋 옆에 긴 글이 보이는데 이것은 커밋 아이디이고 이걸 커밋 해시(commit hash)라 부른다. 커밋 해시안에는 저자(Author), 날짜(Date) 등이 나타나 있다.

터미널에는 커밋들이 여러 줄로 나타나있어 가독성이 떨어진다. 지금이야 커밋 수가 많지 않지만, 프로젝트를 하거나 협업을 할 때는 수많은 커밋들이 있을텐데 이럴때 커밋들을 조금은 보기 편하게 하는 방법이 있다.

$ git log --pretty=oneline

이와 같이 커밋들이 한 줄(oneline)으로 출력되어 보이는 것을 알 수 있다. --pretty 옵션은 git log를 원하는 방식으로 format하는 것이다.

$ git show [아이디 앞에 4자리]

이것을 이용하면 특정 커밋을 한눈에 볼 수 있다. 아이디 앞에 4자리만 타이핑하는 이유는 아주 많은 커밋수가 존재하는 것이 아니라면 겹칠일이 드물기 때문에 보통 저런식으로 살펴본다. 이렇게 나중에 프로젝트를 하다보면 커밋 히스토리를 살펴봐야 할 일이 자주 생기는 데 이럴때 사용하는 git log, git show를 사용해보자.

커밋 메세지는 m 옵션 없이도 남길 수 있다.

$ git commit -m [남길 메세지]

보통 커밋을 할 때 -m 옵션을 이용해서 메세지를 남겨놓았다. 하지만 때로는 한 줄 이상의 복잡하고 긴 커밋 메세지가 필요할 때는 다른 방법을 사용해야 한다.

$ git commit

작업을 수정한 후 git add .git commit을 터미널에 입력하면 MacOS에 맞게 git에 기본으로 설정된 vim 텍스트 에디터를 볼 수 있다. 여기서 i를 입력하면 커밋 메세지를 수정할 수 있고, 커밋 메세지 작업 후 :wq를 입력하면 커밋 메세지가 입력된 것을 볼 수 있다.

여기서 잠깐💡 커밋 생성과 커밋 메세지는 작성 가이드라인이 있다.

개인 프로젝트의 경우는 커밋 메세지를 나만의 방식으로 작성해도 무방하지만, 회사 등 여러 명이 참여하는 프로젝트의 경우에는 일정 가이드라인이 필요하다.

  • 커밋 작성 가이드라인
    1) 커밋 메세지의 제목(title)과 상세 설명(body) 사이에는 한 줄 비우기
    2) 커밋 메세지의 제목 뒤에 . 붙이지 말기
    3) 커밋 메세지의 제목의 첫 번째는 대문자 사용하기
    4) 커밋 메세지 제목은 명령조로 작성하기
    5) 커밋 상세 설명에는 왜 커밋을 했는지, 어떤 문제가 있는지, 해결책은 어떤 효과를 가지는지 작성하기
    6) 최대한 친절하게 작성하기

  • 커밋할 때 가이드라인
    1) 하나의 커밋에는 하나의 수정사항, 하나의 이슈를 해결한 내용만 남기기
    2) 코드 실행시 에러가 발생하지 않을 경우 커밋하기

나중에 다시 봤을 때 이해하는데 어려움이 없고, 다른 동료 개발자와 협업하는데 방해되지 않도록 작성하자!!!!!

최신 커밋 수정하기

새롭게 커밋하는거 보다 커밋 자체를 수정하면 새로운 커밋 메세지를 남기는 등 새로운 행위들이 조금은 줄어든다.

$ git commit --amend

최신 커밋을 수정할 텍스트 에디터가 실행되고 커밋을 수정해서 새로운 커밋으로 만드는 방법이다.

두 커밋 간 차이 보기

2가지 커밋들을 비교하고 싶을 때 어떻게 해야할까?

$ git diff [이전 커밋 아이디][최근 커밋 아이디]

이전 커밋과 최근 커밋에 변경된 점을 한 눈으로 볼 수 있다.

이전 커밋으로 git reset하기

이전 커밋으로 리셋하기 전에 우리는 우선 HEAD의 의미를 알 필요가 있다. 보통 HEAD는 가장 최근에 한 커밋을 가리킨다.

그렇다면 HEAD를 알아야하는 이유는 무엇일까? 우리가 git reset을 이용해서 HEAD 위치를 변경할 수 있다. 보통 최신 커밋으로 설정된 HEAD의 시점이 마음에 들지 않아서 HEAD 위치를 git reset의 커맨드로 변경한 후 그 커밋부터 새로 작성하면 된다.

git reset의 3가지 옵션

--soft, --mixed, --hard의 대표적인 3가지 옵션이 존재한다. 그리고 git에는 3가지의 작업영역이 있다. working directory, staging area, repository가 존재한다.

git reset [옵션] 이전 커밋working directorystaging arearepository
--soft--HEAD가 이전 커밋 가리킴
--mixed-이전 커밋처럼 바뀜HEAD가 이전 커밋 가리킴
--hard이전 커밋처럼 바뀜이전 커밋처럼 바뀜HEAD가 이전 커밋 가리킴

git reset의 개념은 git의 작업영역과 잘 연계해서 외우고 이해하자!
참고로 --hard의 옵션은 사용하기에는 위험하다. 왜냐하면 HEAD가 바뀌는 것은 상관이 없으나 working directory의 작업까지 모두 날아가기에 조심해야한다. 그래서 항상 git pushremote directoryGitHubgit push을 해놓는 습관을 들이자!!

커밋에 tag달기

마지막으로 커밋마다 tag를 달아서 가독성 좋게 만들어보자.

$ git tag [태그 이름][커밋 아이디]

나는 calculator.py의 버전을 나누고 싶어서 저렇게 태그를 달아놓았다.

오늘의 정리💪

오늘은 커밋을 제대로 다루는 시간이 되었다. 모든 일에 순서가 있는 것처럼 순서에 맞게 기록해두는 것이 개발자들에게 중요하다고 많이 듣고 있다. 모든 일이 그렇듯 꼼꼼함과 그에 따라오는 간결함이 중요하다고 생각하기 때문에 오늘 특히 git reset의 3가지 옵션에 대해 다시한번 생각해보자.

0개의 댓글