[Git] Git정리
1. Git User설정
config는 global 모드와 local 모드로 설정이 가능하다. global 모드로 설정하면 컴퓨터 내의 모든 git의 관리를 받는 폴더에 대해 값이 설정되는 것이며, local 설정은 현재 디렉터리에만 값을 설정
git config {--global | --local} user.name "{userName}"
git config {--global | --local } user.email "{userEmail}"
2. Git 저장구조
- Working Directory (작업 공간)
현재 작업중인 Git 프로젝트 파일들이 있는 내 PC의 디렉토리 입니다.
.git 디렉토리를 제외한 프로젝트 디렉토리 내의 모든 공간이 Working Directory라고 할 수 있습니다.
- Staging Area (=index)
index라고도 하며 저장소와 작업 디렉토리 중간에 있는 공간이며, 준비 영역의 역할을 합니다.
파일들이 커밋 되기 전에 모여있는 임시 저장공간으로 모든 파일은 이 공간을 거쳐 저장소로 옮겨지게 됩니다.
git add 명령어를 입력하면 Working Directory의 변경내역을 Staging Area로 옮깁니다.
- Local Repository (=.git, Git Repository)
.git 디렉토리이며 커밋들이 스냅샷으로 기록된 곳입니다.
git commit 명령어를 사용하면 Staging Area의 변경내역들을 실제 스냅샷으로 묶어 Local Repository에 올릴 수 있습니다. 즉 한 버전의 구분점이 되며 이전 버전에서 해당 버전으로의 변경내역이 담겨 있습니다.
git에서 활용하는 데이터들이 저장되는 곳이다. 2글자의 폴더 밑에 38글자의 파일명을 가지는 특이한 구조를 가진다.
objects의 구성은 실제 파일에 담긴 값들을 SHA1 해시한 값 40자 중 2자는 폴더명 38자는 파일명으로 두어 식별자로 활용한다.
해싱을 사용했을 때, 소스 코드의 일부만을 바꾸더라도 별개의 해시값이 되기 때문에, 파일 식별이 쉬워지게 된다. (추가로 SHA1 해시 처리 전, zlib으로 한번의 압축이 진행된다.)
저장되는 파일의 형태는 크게 3가지 blob, tree, commit으로 분리된다.
1. Blog
소스 코드, 이미지 등 다양한 파일의 데이터를 저장한다. 파일의 메타 데이터를 저장하지 않고 데이터 자체만을 저장한다. (파일명과 같은 메타데이터는 저장되지 않음) 그렇기 때문에, 동일한 소스 코드를 가진 파일이 여러 개 있더라도 하나의 blob 파일만 생성된다
2. Tree
폴더 구조를 git에서도 관리해주는 것이 tree 파일이다. Blob에는 실제 파일의 데이터들이 저장되는 것과는 다르게, tree에는 파일 식별자, 파일 데이터의 해시값, 파일의 이름이 저장된다.
3. Commit
각각의 커밋별로 하나의 커밋 파일로 저장된다. git으로 관리되는 가장 바깥 tree의 해시값, author, commiter, 커밋 메시지의 정보가 저장이 된다.
https://jwss.tistory.com/19
https://tecoble.techcourse.co.kr/post/2021-07-08-dot-git/