커밋(commit)은 그냥 영단어의 의미로는
왜 커밋이라고 했는지 이해가 되지 않습니다. ㅎㅎ
IT에서는 커밋은 다양하게 쓰입니다만, 전반적으로 저장되지 않은 모든 데이터를
데이터베이스에 저장하고 현재 실행 중인 일들을 종료하라는 명령으로 사용됩니다.
Git은 개발 소스의 이력을 관리합니다.
이력을 관리하기 위해서는 소스의 변경 사항, 변경된 사항을 시간순으로 기록해야 합니다.
Git에서 커밋은 쉽게 얘기하면
소스의 변경된 사항, 변경된 지점을 저장하는 것이라 할 수 있습니다.
특히, 여러 명이 함께 프로젝트를 진행한다고 하면,
누가 언제 어디를 수정했는지 관리되어야 합니다.
커밋으로 그 변화를 기록하게 되는데,
어떻게 동작하고 사용할 수 있는지 학습하도록 하겠습니다.
커밋(Commit) 하기
앞서 포스팅을 통해 Git의 개념을 익히면서 커밋을 한번 해봤습니다.
다시 한번 상기하는 차원에서 살펴보겠습니다.
저장소에 파일의 이력을 기록하기 위해서는 커밋(commit)을 해야 합니다.
커밋을 하기 위해서는 다음의 순서로 진행됨을 알았습니다.
워킹 디렉토리에서 git add 명령으로 스테이지에 올린 다음
git commit 명령으로 저장소에 기록하는 과정이 필요했습니다.
커밋을 하는 방법은 Git 명령어로 commit이며, 사용법은 다음과 같은 형식이 됩니다.
# 저장소(Repository)에 기록(커밋)
$ git commit <옵션>
# 커밋 메시지와 함께 바로 기록(커밋)
$ git commit -m "커밋 메시지"
이러한 방법으로 우리는 앞서 커밋을 한번 실습해 봤습니다.
커밋을 하기 위해서는 스테이지에 등록하는 것을 반드시 선행되어야 합니다.
그리고, 커밋을 할 때에는 커밋 메시지도 반드시 입력해야 합니다.
스테이지에 등록하고 커밋 메시지까지 바로 작성해서 커밋할 수 있는 방법은
커밋 시에 -a 옵션과 -m 옵션을 함께 사용하는 것이며, 다음과 같습니다.
# 스테이지에 등록과 동시에
# 커밋 메시지를 바로 작성해 저장소에 기록(커밋)
$ git commit -am "커밋 메시지"
스테이지에 파일 등록과 커밋을 동시에 할 수 있는 것은
최소 한번은 커밋을 한 이후에 가능합니다.
소스트리에서도 쉽게 커밋을 할 수 있습니다.
filea.html 파일을 수정한 다음,
소스트리의 파일 상태 메뉴를 확인하면 다음과 같습니다.
수정한 파일 filea.html 이 스테이지에 올라가지 않은 파일 영역에 있기 때문에 커밋할 수 없습니다.
그래서 아래에 [커밋] 버튼이 비활성 되어 사용할 수 없는 상태입니다.
커밋하기 위해서는 스테이지에 올려야 합니다.
filea.html 파일 오른쪽 옆에 [+]버튼을 클릭하거나,
[모두 스테이지에 올리기] 버튼을 이용해
스테이지에 올리면 다음과 같이 [커밋] 버튼도 활성화됨을 알 수 있습니다.
커밋 메시지를 작성하고 [커밋] 버튼을 클릭하면 커밋할 수 있습니다.
커밋 메시지를 작성하지 않고 [커밋] 버튼을 클릭하면
다음과 같이 커밋 메시지 없이 커밋하겠냐고 물어보는 확인창이 나타납니다.
보시다시피 (권장하지 않음) 이라고 되어 있듯이
Git을 사용함에 있어 커밋 메시지 없이 커밋을 하는 것은 지양해야 합니다.
그래도 하겠다면 [확인]을 클릭하면 커밋이 진행됩니다.
CLI에서도 커밋 메시지 없이 커밋할 수 있습니다.
--allow-empty-message 옵션을 사용해 커밋을 진행합니다.
다음과 같이 사용합니다. 마지막에 커밋 메시지 없이 “” 실행하면 되겠습니다.
# 커밋 메시지 없이 커밋하기
$ git commit --allow-empty-message -m ""
커밋을 이해하기 위해서는 HEAD 라는 것을 알아야 합니다.
Git에는 HEAD라는 포인터 개념이 있습니다.
HEAD란 해당 브랜치의 마지막으로 커밋한 위치를 가리킵니다.
그렇기 때문에 Git을 설치하고 처음 커밋할 때는 HEAD의 포인터가 없으며,
최소 한 번 이상 커밋을 해야 HEAD가 존재합니다.
커밋을 하고 HEAD를 이해하는 부분은
다음에 커밋 이력을 살펴보면서 더 알아보고자 합니다.
'코딩해보니 > Git' 카테고리의 다른 글
[Git_17] 스테이지에 등록한(올린) 파일을 취소(삭제)하기(내리기) (0) | 2022.12.09 |
---|---|
[Git_16] 커밋(Commit)의 이해 - 커밋 이력 확인하기 (0) | 2022.12.08 |
[Git_14] 실습을 통해 Git 완벽 이해하기 (0) | 2022.11.22 |
[Git_13] Git 개념 잡기 - Git에서 파일 상태 이해 하기 (0) | 2022.11.18 |
[Git_12] Git 개념 잡기 - 워킹 디렉토리, 스테이지, 저장소 (0) | 2022.11.17 |
댓글