(Git 명령어) 4. git commit - 커밋하기

Byeongho Jeon·2025년 2월 10일

Git

목록 보기
5/13
  1. 스테이지로 변경 사항을 추가했다면 이제 커밋을 하면 된다. 커밋해서 새로운 버전을 만드는 명령어는 git commit -m "커밋 메시지" or git commit --message "커밋 메시지"이다.

커밋 메시지란 버전을 설명하는 메시지이다. 어떤 파일을 어떻게 변경했고, 왜 이렇게 변경했는지 등의 내용을 담은 일종의 쪽지라고 보면 된다.
커밋 메시지는 제목과 본문으로 이루어져 있으며 본문은 생략 가능하다. 첫 줄에는 제목을 쓰고, 한 줄 띄고 셋째 줄부터 본문을 작성하면 된다.
깃을 통해 새로운 버전을 만들 때는 커밋 메시지를 적기를 권장한다. 커밋 메시지를 적지 않는다면 프로젝트의 규모가 커지고 커밋이 많이 쌓였을 때, 각각의 커밋이 왜 만들어졌고 어떤 변경 사항이 있었는지 파악하기 어렵기 때문이다. 또한 협업 과정에서 개발자들 사이에 중요한 의사소통 수단이 되기도 한다.

  1. 버전(커밋)이 잘 만들어졌는지 확인해 보자. 저장소의 커밋 목록을 출력하는 명령어는 git log이다.
    git log를 입력하면 커밋 해시(학번, 사번과 같이 각 커밋이 가진 고유한 ID), 만든 사람, 커밋이 만들어진 날짜, 커밋 메시지가 출력된다.
    커밋 해시 우측의 HEAD -> main은 현재 HEAD가 main 브랜치에 있음을 나타낸다.
    HEAD란 기본적으로 현재 작업 중인 브랜치의 최신 커밋을 가리키는 일종의 표시이다.
  1. git commit -am "커밋 메시지" 명령어로 스테이지에 추가와 커밋을 동시에 할 수도 있다. 이 명령어는 git commit -a -m "커밋 메시지" or git commit --all --message "커밋 메시지"와 같다.
    우선 작업 디렉터리에 변경 사항을 만든다. 그리고 git status 명령어로 작업 디렉터리의 상태를 확인하면 Changes not staged for commit:~~ modified: a.txt라고 출력되는데 이는 작업 디렉터리에서 수정한 파일(a.txt)이 아직 스테이지에 올라가지 않았다는 뜻이다.

스테이지 추가와 커밋을 동시에 하기 위한 조건

git commit -am "커밋 메시지" 명령어는 깃이 변경 사항을 추적하는(tracked) 파일에만 사용 가능하다. 즉, 스테이지에 이미 올라와 있거나 한 번이라도 커밋한 적이 있는 파일에만 사용할 수 있다.
깃이 기존에 변경 사항을 추적하지 않는(untracked) 파일은 이 명령어를 사용할 수 없다.

관리 대상(tracked) 파일과 관리 대상이 아닌(untracked) 파일

스테이지에 올라왔거나 한 번이라도 커밋된 적 있는 파일은 깃이 변경 사항을 추적한다. 이런 파일을 'tracked 상태'에 있는 파일이라 한다.
스테이지에 올라가지 않고 커밋된 적 없는 파일(즉, 깃이 기존에 변경 사항을 추적하지 않았던 새로 생성된 파일)을 'untracked 상태'에 있는 파일이라 한다.

  1. git commit -m "커밋 메시지"git commit -am "커밋 메시지" 명령어 속 커밋 메시지는 커밋 메시지의 제목을 나타낸다. 즉, 이 두 명령어는 커밋 메시지의 본문은 생략하고 간단하게 제목만 적을 때 사용하는 명령어이다.
    본문까지 작성하려면 git commit 명령어를 사용하면 된다. 우선 변경 사항을 만들고 스테이지에 추가한다.
  1. git commit을 입력하면 커밋 메시지를 작성할 수 있는 Vim(편집기)이 나온다. 여기서 제목과 본문을 포함한 자세한 커밋 메시지를 작성하면 되는데, 바로 입력이 안 된다. Vim에서 무언가를 작성하려면 입력 모드로 전환해야 한다. 입력 모드 전환키는 a 또는 i 이다. 하단에 INSERT가 나온다면 입력 모드로 전환된 것이다.
  1. 커밋 메시지 제목은 첫 번째 줄에 작성한다. 커밋 메시지의 본문은 제목에서 한 줄 띄고, 세 번째 줄부터 작성하면 된다.
  1. 이제 작성한 커밋 메시지를 저장하면 커밋이 된다. 저장하려면 우선 입력 모드에서 명령 모드로 전환해야 한다. 명령 모드 전환키는 ESC이다. 하단의 INSERT가 사라지면 명령 모드로 전환된 것이다.
    여기서 :write 또는 :w를 입력한 뒤 ENTER를 누르면 작성한 내용이 저장된다. 그리고 :quit 또는 :q를 입력한 뒤 ENTER를 누르면 입력 창이 닫힌다. 또는 :wq를 입력하고 ENTER를 눌러도 된다. :wq:w:q를 동시에 입력하는 것과 같다.
profile
안녕하세요. 개발자 지망생 전병호입니다!

0개의 댓글