2장.깃으로 버전 관리하기
깃 저장소 만들기
- 저장소: 폴더 안에 버전이 저장되는 공간
- 깃 저장소 만들기
$ cd c:
$ mkdir hello-git
$ cd hello-git
- 현재 디렉토리에서 깃을 이용할 수 있도록 초기화 하기
$ git init
버전 만들기
깃에서의 버전 관리
- 버전 관리 시스템: 버전을 만든 시간과 수정 내용까지 기록할 수 있는 것.
- 원래 파일 이름은 그대로 유지하며 변경 사항 확인 가능
- 버전마다 작업한 내용 확인 가능
- 되돌리기도 가능
깃의 작업 영역 이해하기
- 작업 트리: 파일 수정, 저장 등의 작업을 하는 디렉터리.
- 스테이지: 버전으로 만들 파일이 대기하는 곳.
- ex. 작업 트리에서 파일 10개를 수정했는데, 4개만 버전으로 만들려면 이 파일 4개만 스테이지로 넘기면 됨.
- 저장소: 스테이지에서 대기하고 있던 파일들을 버전으로 만들어 저장하는 곳.
스테이지와 커밋 이해하기
- add: 파일을 스테이지에 넣을 때 사용하는 명령.
- commit: 깃에서 버전을 만드는 명령.
- commit 명령을 수행하면, 새로운 버전이 생성되면서 스테이지에서 대기하던 파일이 모두 저장소에 저장됩니다.
작업 트리에서 변경 사항 만들기
$ git status
- on branch main: 현재 main 브랜치에 있음.
- No commits yet: 커밋한 파일이 없음.
- nothing to commit: 현재 커밋할 파일이 없음.
- 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 상태
💡방금 커밋한 메시지를 수정하려면?
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.