Git

[Git 교과서] 4장 커밋

차노도리 2023. 5. 11. 21:09

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