본문 바로가기
utils/git and github

[Git] commit

by ds31x 2024. 5. 20.

git commit -m “message”

Stage 에서 repository 로 이동시켜 version 관리를 실제로 시작하게 하는 명령어.
즉, 현재 stage의 snapshot을 repository에 기록.


note: snapshot 방식이란?

  • 현재 repository에 저장된 최신의 내용(HEAD 가 해당 내용을 가르킴)과 현재 stage의 내용의 차이를 비교하여
  • 차이점만을 저장하는 방식을 가르킴.
  • 기존의 VCS와 Git의 차이점 중의 하나.
  • 마치 차이점을 사진을 찍듯이 저장한다는 의미로 snapshot방식이라고 부름.

HEAD(일종의 포인터)가 가르키고 있는 commit된 내용(=가장 최신의 repository내용)을 기본으로 삼아 현재의 stage의 내용과 비교하여 차이점을 기록함.


다음 글에 이어지는 예제:2024.05.20 - [utils/git and github] - [Git] git add

Example

git commit -m "add first_file.txt"
  • -m 옵션(=로그를 inline으로 편집 option)을 빼고 수행시,
    shell에서 EDITOR에 등록된 편집기 SW가 수행되어 해당 commit에 대한 로그를 남기게 됨.
    • commit 을 할 경우, 각각의 commit을 구별할 수 있는 메시지가 필요함.
    • 이를 commit message라고 하며, 일종의 해당 commit에 대한 설명서임.
    • GIT에서는 반드시 commit 메시지를 작성해야함.
    • 사실 --allow-empty-message 사용할 경우, commit message가 없는 commit 생성가능.
  • git config --global core.editor 명령으로 어떤 editor sw를 사용할지 선택 가능함.

아래 그림과 같은 출력이 나옴.

  • 여기서는 최초로 git commit을 수행한 경우로, "유저가 누구인지를 입력하라는 메시지"를 볼 수 있음.
  • 이 경우 시키는 대로 유저 정보를 git에 설정하고나서 commit 을 수행하면 됨.

정상적으로 모든 untracked files가 add 와 commit 이 되어 version 관리 상태가 되면

git status수행시 다음과 같이 nothing to commit, working tree clean 메시지를 볼 수 있음.


특정 파일 버전관리에 추가방법: add, commit

즉, 다음과 같은 과정이 일반적으로 특정 파일의 버전관리에 반복됨.

  1. working tree에서 파일 수정을 하고나서
  2. git add를 통해 stage로 보내고,
  3. 로그와 함께 repository에서 version 관리에 등록 하기 위해 git commit -m “message”를 이용함.

add+commit : stage상태로 올리면서 commit 동시에 수행하기.

git commit -a 명령어를 수행시 한번에 처리가 가능함.

  • 현재의 tracked 상태의 모든 파일들에 대한 변경사항을 stage로 올리고나서 commit 을 수행.
  • 즉, 새로운 파일을 작성한 경우는 untracked 상태이기 때문에 -a 로 동시 처리는 안됨.

'utils > git and github' 카테고리의 다른 글

[Git] Git Summary (작성중)  (0) 2024.05.20
[Git] commit —amend  (0) 2024.05.20
[Git] git add  (0) 2024.05.20
[Git] git status  (0) 2024.05.20
[Git] init : local repository 생성.  (0) 2024.05.20