개발과정에서 코드는 많은 사람들에의해서 수정된다
개발이 진행됨에따라 과거의 코드로 돌아가야할 경우 commit 이력을 사용해서 돌아갈 수 있다

Commit

  • 개발중인 코드의 변화를 기록하는것(이력 생성)으로 특정 시점으로 돌아갈 수 있다
  • 커밋은 파일의 변화를 깃 저장소에 영구적으로 기록한다
  • 이것이 깃의 버전 관리이다

파일 관리 방법

과거에 Git을 사용하지 않던떄에는 파일을 복사하는 방법으로 이력을 관리하였다 이 경우 많은 파일을 생성되어 용량이 큰 점, 중복 문제, 관리가 어렵다는 부작용이 있다

최종.html -> 최종2.html -> 최종3.html ->진짜 최종.html

Git을 사용하고서는 파일은 동일하나 변경된 부분만 추출항 commit으로 저장한다 파일 하나를 이력으로 처리 커밋은 부모커밋을 기반으로 변화된 부분만 새로운 커밋으로 생성한다

최종.html : 커밋1 -> 커밋2 -> 커밋3 -> 커밋4

용어 정리

  1. HEAD
  • 현재 체크아웃된 브랜치의 가장 최신 커밋을 가리키는 포인터
  • HEAD는 현재 작업 중인 브랜치의 최신 커밋을 가리키며, 이 커밋을 기준으로 새로운 커밋이 생성된다
  • 커밋이 없을 땐 HEAD는 “브랜치 이름”을 가리키지만, 실제 커밋은 아직 없어서 “unborn” 상태이다
  • 커밋이 생성되면 HEAD는 자동으로 최신 커밋을 가리키도록 이동하며, 가장 최근 커밋인 현재 작업위치를 가리킨다
  1. SNAPSHOT
  • HEAD 가 가리키는 커밋을 기반으로 사진을 찍고 스테이지 영역의 파일과 비교하여 새로운 커밋을 기록한다
  • 이는 빠르게 버전의 차이점을 처리하고 용량을 줄일 수 있다

사용해보기

1. 새 파일 생성

  1. 파일을 생성하여 워킹 디렉터리에 index.html 저장
 파일 생성                  워킹 디렉토리
    |                          |
    | index.html              |
    |------------------------->|
    |                          |
# 폴더 생성
mkdir test-git

# 폴더 경로로 이동
cd test-git

# 저장소를 깃으로 초기화
git init

# 파일 작성
code index.html

index.html에는 !+tab으로 기본적인 html 구조를 작성하였다

  1. Git에서 새성된 파일 확인

  • 추적하지 않는 파일 (untracked files)
    • 빨간색으로 추적되지 않는 파일을 알려준다

위처럼 깃은 워킹 디렉토리에 새파일이 추가된면 상태를 감지하고 추후에 추적할지 여부를 결정한다

2. Git에 새파일 등록

  • 깃은 워킹 디렉터리에 잇는 파일을 자동으로 추적하여 관리하지 않는다

1) 스테이지 영역에 파일 등록

  • 등록(add) : untracked 상태의 파일을 추적 가능 상태로 변경하는것

    git add 파일명 # 단일 파일
    
    git add . # 변경된 모든 파일
    
  • 파일을 등록하면 워킹 디렉토리의 파일이 스테이지 영역에 추가(복사)된다
  • 깃은 스테이지 영역의 관리목록에 추가된 파일만을 추적한다

스테이지에 복사

  • 실제 파일을 복사하는것이 아닌, 깃 내부에서 논리적인 기록을 변경하는것

2) 파일의 추적 상태 확인하기

  • git status : 파일이 추적중인지 확인
  • 새파일(new file) : 스테이지 영역에 정상적으로 파일을 등록함

3. 커밋 등록

1. commit 등록하기

  • 워킹 디렉토리가 정리되어있지 안으면 커밋 명령어를 수행할 수 없다
    ➔ 커밋 전후에는 항상 git status로 확인하자!
  • git commit -help 명령어를 통해 여러 동작을 동시에 실행 할 수 있다
git commit -옵션

# 커밋 메시지 남기기
git commit -m "구별 가능한 메세지"  # 파일명은 같기에 커밋메시지로 구분해야함

# 파일 등록과 커밋 동시에 하기
git comit -a  # 커밋 전에 자동으로 모든 파일을 등록한다

# 파일 등록과 커밋메시지를 동시에 등록
git commit -am "커밋메시지"
  • 커밋을 하면 스테이지 영역이 초기화된다(새로운 파일이나 수정된 파일이 없음)

2. 커밋 확인

  • git log :커밋후 커밋한 기록들을 확인
  • 최신 커밋순으로 커밋 기록을 출력한다
git log

4. 커밋 (파일 등록) 취소

  • 스테이지 영역의 파일(tracked)을 워킹 디렉토리로 돌려보내기(untracked)
  • rm(삭제) 이나 reset 명령어를 사용하여 unstage 상태로 변경한다

  • rm(삭제) : 파일 등록후 커밋하지 않고 바로 삭제

    • 파일이 untracked 상태가되고, 스테이지 영역에서 삭제된다
    git rm --cahced 파일명.확장자 # 스테이지 삭제
    

  • reset : 한번이라도 커밋을 하고 삭제하는 경우

    • 커밋 후 삭제한경우 삭제 또는 변화된것으로 간주한다
    • 커밋된 파일은 리셋으로 삭제한 후 정리해 주어야한다

    git reset HEAD 파일명.확장자 # 리셋시도
    

5. 이후의 커밋

  1. 파일 수정

  2. 파일 변경 사항 확인

  3. 수정된 파일 되돌리기

  4. 스테이지에 등록

  5. 이후의 커밋 하기

  6. Github에서 확인하기

태그:

카테고리:

업데이트:

댓글남기기