2022. 7. 27. 04:05ㆍGIT
HEAD
깃에는 HEAD라는 포인터 개념이 있다.
HEAD는 커밋을 가리키는 묵시적 참조 포인터이다.
HEAD는 최종적인 커밋 작업의 위치를 가리킨다.
새로운 커밋은 이전 커밋을 기반으로 만들어진다.
깃을 설치하고 처음 커밋 할 때 HEAD의 포인터가 없다.
최소 한 번 이상 커밋을 해야만 HEAD가 존재한다.
스냅샷
커밋은 파일 변화를 깃 저장소에 영구적으로 기록한다.
깃이 다른 버전 관리 도구와 다른 점은 스냅샷 방식을 이용한다는 점이다.
깃은 변경된 파일 전체를 저장하지 않고 파일에서 변경된 부분을 찾아 수정된 내용만 저장한다.
스냅샷은 HEAD가 가리키는 커밋을 기반으로 스테이지 영역과 비교하여 새로운 커밋으로 기록한다.
파일 상태와 커밋
커밋은 변화된 내용을 영구적으로 깃 저장소에 기록한다.
새롭게 생성된 파일을 커밋하려면 tracked 상태로 변경해주어야 한다. (스테이지 영역 등록)
tracked 상태인 파일을 수정하면 modified 상태로 변경된다. unstage 상태로 스테이지 영역에 재등록해야 한다.
커밋하기 전 status 명령어로 확인하는 습관이 필요하다.
워킹 디렉토리가 정리되어 있지 않으면 커밋 명령어를 수행할 수 없다.
커밋을 하려면 스테이지 영역에 새로운 변경 내용이 있어야 한다.
수정된 내용이 스테이지 영역에 등록되지 않았다면 커밋을 할 수 없다.
커밋은 수정된 내용을 한 번만 등록할 수 있다.
명령어로 커밋
$ git commit
깃의 커밋은 HEAD와 스테이지 영역 간 차이를 비교하여 새로운 객체를 생성한다.
생성된 객체를 깃 저장소에 기록한다.
커밋은 새로 수정된 파일과 디렉토리를 묶는 트리 객체이다.
커밋 메시지
커밋을 할 때 생성된 객체를 기록하는 것과 동시에 이를 구별할 수 있는 메시지를 같이 작성해야 한다.
깃은 변화된 객체를 구별하기 위해 메시지 시스템을 도입하여 모든 커밋은 반드시 커밋 메시지를 작성해야 한다.
$ git commit 하면 커밋 메시지 작성하라고 하며 메시지를 작성할 수 있는 화면이 나온다.
기본적으로 커밋 메시지는 vi 에디터를 사용한다.
vi 에디터 기본 사용법은 알고 있는게 좋을 것 같다.
새로운 내용 입력할 때 Esc + i
작성후 저장 Esc : + w
종료 Esc : + q
vi 에디터에서 # 는 주석 처리
vi 에디터에 아무 내용도 넣지 않고 종료하면 커밋 명령은 취소된다.
vi 에디터에 작성할 때 보통 첫 줄에 제목, 다음 줄에 상세 내용을 적는다.
첫 줄을 분리하여 작성하는 것은 로그 출력을 간단하게 하기 위해서다.
※ vi 에디터 이외의 에디터를 사용하고 싶을 땐 깃의 환경 설정을 변경하면 된다.
$ git config --global core.editor "에디터 경로"
파일 등록과 커밋을 동시에 하는 방법
$ git commit -a
-a 옵션은 커밋을 하기 전에 자동으로 모든 파일을 등록하는 과정을 미리 수행한다.
수정된 파일, 삭제된 파일을 스테이지에 등록을 한다.
하지만 새 파일 즉, untracked 상태인 파일은 등록하지 않는다.
소스트리에서 커밋 메시지 작성
소스트리에서 파일 상태 탭에서 메시지를 입력하는 공간이 있다.
커밋 메시지를 입력하고 커밋 누르면 끝이다.
'GIT' 카테고리의 다른 글
[GIT] 두 번째 커밋 (0) | 2022.07.27 |
---|---|
[GIT] 커밋 확인 (0) | 2022.07.27 |
[GIT] 새 파일 등록 (0) | 2022.07.27 |
[GIT] 새 파일 생성 (0) | 2022.07.26 |
[GIT] 커밋 의미 (0) | 2022.07.25 |