커밋(commit)
프로젝트 디렉토리의 특정 모습을 하나의 버전으로 남기는 행위 & 결과물
레포지토리(repository)
커밋이 저장되는 곳
레포지토리 만들기
$ git init
.git이라는 디렉토리가 생긴걸 확인 할 수 있는데 이게 바로 레포지토리이다. 여기서 git이 어떤 복잡한 작업을 함으로써 버전관리를 할 수 있다.
커밋하기
처음 커밋을 할 때엔 꼭 해야하는 것이 있다. 깃에게 commit한 사람을 알려주는 것이다. 그래야 나중에 누가 커밋햇는지 알 수 있다.
$ git config user.name "사용자 이름"
$ git config user.email "사용자 이메일주소"
$ git add 파일이름
$ git commit -m "남길 메세지"
- config : 설정하다, 구성하다.
- commit : 행하다, 기록하다.
+여담
git은 내부적으로 크게 3가지 종류의 작업 영역을 두고 동작한다.
- working directory = working tree
- staging area = index
- repository
첫번째 작업 영역인 working directory는 작업을 하는 프로젝트 디렉토리를 말한다. 위에 상황에선 MathTool 디렉토리가 working directory가 된다.
두번째 작업 영역인 staging area는 git add를 한 파일들이 존재하는 영역이다. 커밋을 하게 되면 staging area에 있는 파일들만 커밋에 반영된다.
세번째 작업 영역인 repository는 working directory의 변경 이력들이 저장되어 있는 영역이다. 커밋들이 저장되는 영역이라는 뜻인데 풀어서 이야기 해보면
- working direcrory에서 무언가 작업을 하고,
- 작업한 파일들을 git add 해주고,
- 커밋을 하면 staging area에 있던 파일들의 모습이 마치 영화의 한 장면, 스냅샷(snapshot)처럼 이 repository에 저장된다.
- working directory에서 A.txt 파일과 B.txt 파일을 작성하고
- git add A.txt와 git add B.txt를 실행해서 A.txt, B.txt 둘다 staging area에 올렸다.
- 그 다음 git commit -m "Ver_1"를 실행해서 staging area에 있는 파일들을 가져와 커밋으로 남겼다.
- working directory에서 A.txt 파일 내용에 Python~ 이라는 단어를 추가, B.txt 파일 내용에 Morning이라는 단어를 추가
- 그런데 이번에는 git add B.txt만 실행해서 B.txt파일만 staging area에 올렸다
- 그 다음 git commit -m "Ver_2"로 두번째 커밋을 했다.
이전 그림과 다른 점은 A.txt는 staging area에 올리지 않고 B.txt만 staging area에 올렸다는 점인데 지금 레포지토리의 결과는
- A.txt는 staging area에 있던 모습, 수정하기 이전의 모습이 Ver_2에 반영
- B.txt는 staging area에 있던 모습, 하지만 A.txt와는 달리 수정한 이후의 모습이 Ver_2 커밋에 반영되었다.
A와 B 둘 다 working directory에서 수정했다는 사실은 같지만, staging area에 올렸는지 여부에 따라 그 최신 모습이 커밋에 반영되는지 달라지는 것이다.
'코린이 개념잡기 > GIT' 카테고리의 다른 글
push와 pull (0) | 2024.12.08 |
---|---|
staging area에서 파일 제거하기 (0) | 2024.12.08 |
파일의 4가지 상태 (0) | 2024.12.08 |
git status (0) | 2024.12.08 |
GIT이란 (1) | 2024.02.02 |