commit
git commit
- 코드 변화를 (코드 변경 이력과 시점을) 기록하는 동작.
- 커밋을 하는 이유
- 변경 내용이 많은 경우 사용자가 일일이 기억하지 않아도 된다.
- 개발하는 도중 실수나 여러 이유로 이력을 되돌려야 할 때 변경 전 시점으로 되돌아 갈 수 있다.
- 전통적인 파일 이력 관리와 깃의 다른점
- 파일을 복사해서 파일명을 변경했고 변경 내용을 기록하는 것보다 많은 파일을 생성하고 관리해야 하는 부작용이 있다.
- 중복되는 내용이 많아 용량도 많이 차지한다.
- 깃은 반대로 동일한 파일 이름으로, 하나로 관리가 가능하다.
- 깃의 커밋은 새로 변경된 부분만 추출하여 저장한다.
새 파일 등록
워킹 디렉토리에 있는 새 파일을 커밋하려면 untracked 상태를 추적 가능한(tracked) 상태로 변경해야 한다.
스테이지 영역에 추가된 파일만 깃에서 이력을 추적할 수 있기 때문이다.
- git add
- 스테이지에 등록한다.
- add 명령어를 실행하면 지정한 파일은 스테이지 영역으로 등록된다.
- tracked 상태로 변경된다.
- git rm --cached [파일명]
- 스테이지에 있는 tracked 파일을 untracked 상태로 변경한다.
- --cached : 스테이지 영역에서만 등록된 파일 삭제 option.
- git에서 대소문자 파일 변경을 인식 못하는데 해당 명령어를 통해서 변경하면 인식이 된다.
- git reset HEAD [파일명]
- 커밋 후에 이전 상태로 변경하려 할 때 사용한다.
- git mv 파일이름 새파일이름
- 파일 이름 변경시 사용한다.
commit 메세지
- 생성된 커밋 객체마다 이를 구별하기 위한 메세지를 같이 작성한다.
- 파일 이름 하나만 가지므로 대신 변화된 객체를 구별하고자 메세지 시스템 도입하여 별도로 작성한 메세지로 구분한다.
- 모든 커밋은 반드시 커밋 메세지를 작성하는 걸 원칙으로한다.
- git commit -m '커밋메세지' : 한줄짜리 커밋메세지와 함께 커밋
- git commit -am '커밋메세지' : 스테이지 등록과 한줄짜리 커밋메세지와 함께 커밋
- git commit -a : 스테이지 등록과 커밋을 동시에 커밋
- git checkout -- [수정된 파일 이름] : 수정 전으로 되돌리기
- git commit --amend: 마지막 커밋 메세지를 수정할 때
- git commit --allow-empty-messge -m "" : 메세지가 없는 빈 커밋 작성시 사용
- 커밋 후 git status명령어로 상태 확인을 하면 스테이지 영역이 초기화 되어 있다. 더이상 추가된 새로운 파일, 수정된 파일이 없음을 의미한다.
commit 아이디
- SHA1 라는 해시 알고리즘으로 되어 있음
- 이 해시키 값은 40자리의 hexa 값, 중복되지 않은 고유의 키
- git은 스테이지 영역의 변경된 내용을 기반으로 SHA1 해시키 생성.
- git 이 SHA1를 이용하는 이유는 콘텐츠 추적, 분산형 저장관리 운영시 충돌 방지하기 위함.
- 해시 앞쪽 7자만으로도 사용 가능
git log
- git log --pretty=short : 로그 출력시 첫번째 줄의 커밋메세지만 출력한다.
- git show 커밋ID : 특정 커밋 상세정보 보기
- git log [파일명] : 특정 파일의 로그 기록 보기
- git log -p : diff 기능 (수정한 라인 비교)을 포함하여 로그 출력한다.
- git log --stat : 히스토리 출력한다.
- git log --pretty=oneline : 각 커밋을 한줄로 표시한다.
git diff
- git diff : 워킹 디렉토리 내용과 스테이지 내용의 차이점 출력한다.
- git diff head: 최신 커밋과 변경 내용의 차이점 출력한다.
'Git' 카테고리의 다른 글
[Git 교과서] 7장 Stash (0) | 2023.06.15 |
---|---|
[Git 교과서] 6장-2 Branch (0) | 2023.06.03 |
[Git 교과서] 6장-1 Branch (0) | 2023.05.27 |
[Git 교과서] 5장 서버 (0) | 2023.05.24 |
[Git 교과서] 3장 깃 개념 잡기 (0) | 2023.05.02 |