Post

2장.깃으로 버전 관리하기

깃 저장소 만들기

  • 저장소: 폴더 안에 버전이 저장되는 공간
  1. 깃 저장소 만들기
$ cd c:
$ mkdir hello-git
$ cd hello-git
  1. 현재 디렉토리에서 깃을 이용할 수 있도록 초기화 하기
$ git init

버전 만들기

깃에서의 버전 관리

  • 버전 관리 시스템: 버전을 만든 시간과 수정 내용까지 기록할 수 있는 것.
    • 원래 파일 이름은 그대로 유지하며 변경 사항 확인 가능
    • 버전마다 작업한 내용 확인 가능
    • 되돌리기도 가능

깃의 작업 영역 이해하기

alt text

  • 작업 트리: 파일 수정, 저장 등의 작업을 하는 디렉터리.
  • 스테이지: 버전으로 만들 파일이 대기하는 곳.
    • ex. 작업 트리에서 파일 10개를 수정했는데, 4개만 버전으로 만들려면 이 파일 4개만 스테이지로 넘기면 됨.
  • 저장소: 스테이지에서 대기하고 있던 파일들을 버전으로 만들어 저장하는 곳.

스테이지와 커밋 이해하기

alt text alt text

  • add: 파일을 스테이지에 넣을 때 사용하는 명령.
  • commit: 깃에서 버전을 만드는 명령.
    • commit 명령을 수행하면, 새로운 버전이 생성되면서 스테이지에서 대기하던 파일이 모두 저장소에 저장됩니다.

작업 트리에서 변경 사항 만들기

$ git status
  1. on branch main: 현재 main 브랜치에 있음.
  2. No commits yet: 커밋한 파일이 없음.
  3. nothing to commit: 현재 커밋할 파일이 없음.
  4. untracked fies: 깃에서 버전을 아직 한 번도 관리하지 않은 파일.

스테이지에 변경 사항 올리기 – git add

  • 스테이징(스테이지에 올린다): 깃에서 버전 만들 준비를 하라고 알려주는 것.
$ git add hello.txt

스테이징한 파일 커밋하기 – git commit

  • 커밋 한다: 버전 만드는 것
  • 커밋 메시지: 커밋과 함께 저장할 메세지
$ git commit -m "message1"

$ git log 

스테이징과 커밋 한꺼번에 처리하기 – git commit -am

  • 수정한 내용을 스테이지에 올리는 동시에 커밋할 수도 있음(단, 한 번이라도 커밋한 적이 있는 파일을 다시 커밋할 때만 이용)

커밋 내용 확인하기

커밋 기록 자세히 살펴보기 – git log

  • 커밋 로그
    • 깃 해시: 커밋을 구별하는 아이디
    • (HEAD -> main)는 이 버전이 최신이라는 표시
    • Author: 누가 만들었는지
    • Date: 언제 만들어졌는지

변경 사항 확인하기 – git diff

  • 작업 트리와 스테이지에 있는 파일을 비교 or 스테이지에 있는 파일과 저장소에 있는 최신 커밋을 비교

버전 만드는 단계마다 파일 상태 알아보기

tracked 파일과 untracked 파일

  • tracked 파일: 한번이라도 커밋한 파일. 수정 사항이 있는지 계속 추적당하는 파일
  • untracked 파일: 한 번도 커밋하지 않은 파일
  • git –stat: 커밋과 관련된 파일까지 함께 살펴봄.

💡특정 파일이나 디렉터리를 버전 관리에서 제외하려면?

  • .gitignore 파일을 만들어 목록을 지정.
    • .gitignore 파일을 만든 후, 그 안에 버전을 관리하지 않을 파일이나 디렉터리 이름, 또는 파일 확장자를 입력.
1
2
3
4
(in .gitignore)
mynote.txt
temp/(디렉터리리)
.swp(확장자)

unmodified, modified, stage 상태

alt text

💡방금 커밋한 메시지를 수정하려면?

1
$ git commit --amend

작업 되돌리기

작업 트리에서 수정한 파일 되돌리기 – git restore

1
$ git restore hello.txt

스테이징 되돌리기 – git restore –staged

1
$ git restore --staged hello2.txt

최신 커밋 되돌리기 – git reset HEAD^

  • 커밋을 취소하면 커밋과 스테이징이 함께 취소됨.
1
$ git reset HEAD^

💡옵션에 따라 단계별로 취소하려면?

  • git reset –soft HEAD^: 커밋을 취소하고 파일을 staged 상태로 작업 디렉토리에 보관.
  • git reset –mixed HEAD^: 커밋을 취소하고 파일을 unstaged 상태로 작업 디렉터리에 보관합니다.
  • git reset HEAD^: –mixed 옵션을 사용할 때와 같이, 커밋을 취소하고 파일을 unstaged 상태로 작업 디렉터리에 보관합니다.

특정 커밋으로 되돌리기 – git reset 해시

❗ git reset –hard “A의 커밋 해시”는 A 커밋 이후에 만들었던 커밋을 삭제하고 A 커밋으로 이동하겠다는 의미입니다.

$ git reset --hard 복사한 커밋 해시

커밋 변경 이력 취소하기 – git revert

  • 삭제되지 않고, 돌아감.
    $ git revert 복사한 커밋 해시
    
This post is licensed under CC BY 4.0 by the author.

Trending Tags