흠.. 부끄럽지만.
Git을 매일 사용하면서, 어떤식으로 파일을 관리하는지에 대해서는 전혀 몰랐던 것 같다.
Git의 동작
특징
1. 대부분의 명령을 로컬에서 실행
- push, pull등 원격 저장소에 변경사항을 반영하거나, 최신버전을 가져올 때만 네트워크가 필요하다.
--> 오프라인에서도 작업이 가능하다는 말.
2. git의 무결성
- 데이터 저장 전에 체크섬을 구하고, 그 체크섬으로 데이터를 관리한다.
checksum : git에서 사용하는 가장 기본적인(Atomic)데이터 단위, 40자 길이 16진수 문자열.
- SHA-1해시를 사용해 checksum을 만든다.
*SHA-1 : 입력을 받고 해시값을 만드는 암호화 해시 함수(보통 16진수, 40자리 문자열)
- 모든 것을 해시로 관리한다.
3. git은 데이터를 추가만 한다.
- revert같은 기능을 써보면, 기존 변경점을 rollback하는 또 다른 변경점을 생성해낸다.
예를 들어 3(기존) + 4(변경1) * 5(변경2)와 같은 상태에서
기존으로 돌아가고 싶으면
3(기존) +4(변경1) * 5(변경2) /5(변경3) -4(변경4)
라는거지.
세 가지 상태
Git은 파일을 Commited, Modified, Staged 3가지 상태로 관리한다.
- Commited : 데이터(변경사항)가 로컬 DB에 안전하게 저장됨.
- Modified : 수정되었지만, DB에 커밋되지 않은 상태
- Staged : 현재 수정 파일을 곧 커밋할 것이라고 표시한 상태.
세 가지 공간
1. 워킹 트리에서 파일을 수정한다.
2. Staging Area에 파일을 Stage해서 커밋할 스냅샷을 만든다.
3. Staging Area에 있는 파일을 커밋해서, Git 디렉토리에 영구적인 스냅샷으로 저장한다.
□ 워킹 트리
- 실제 소스코드 수정이 이루어지는 영역이다.
- 특정 버전을 Checkout 한 것이라고도 한다.
□ Git 디렉토리 : git이 프로젝트의 메타데이터와 객체 DB를 저장하는 곳.
- .git 디렉토리가 있어야지, git에 의해 관리되는 프로젝트라 인식한다.
- clone하거나, 특정 디렉토리를 git으로 설정하면 생성된다.
□ Staging Area : git 디렉토리에 있으며, 곧 커밋할 파일 정보를 저장한다.. Git에서는 기술용어로 Index라 한다.
Staging area에 올리면, 이제 commit할 수 있다. 창을 잘 읽어보면,
git restore --staged "파일명"으로 unstage를 할 수 있다는 것을 알 수 있다.
로그를 꼼꼼히 읽자...ㅎ
오늘은 여기까지.
이미 자주 사용해서 익숙한 기능이지만
개념을 알고 나니까. 왠지 더 잘 쓸 수 있을 것만 같다.
뿌.듯.
'Git' 카테고리의 다른 글
[Git] Git- Stash(임시저장) (0) | 2023.05.25 |
---|---|
[Git] Git 저장소 생성 (0) | 2023.05.23 |
[GIT] Git 초기 설정 - 도움말, 사용자 정보설정 (0) | 2023.05.23 |
[GIT] Git 공부를 시작하다. (0) | 2023.05.10 |
댓글