티스토리 뷰
Git Intro
로컬 디렉토리(modified files) → git add → staging area(staged files) → git commit → remote repo(committed files)
- 깃 안의 정보들은 checksum으로 참조
- 파일이 repo에 저장되면, repo 안에서 직접적으로 파일을 변경하는 것은 불가능
- 깃은 working directory, staging area, repository를 모두 분리해서 관리
Using Git Locally
repository 생성
Creating
- 로컬 디렉토리를 git repository skeleton으로 변경
- 작업 디렉토리로 이동 → git init
- version-controlling 시작 X
- 작업 디렉토리 내부에 .git 폴더 생성
- .git 은 git repo의 skeleton 정보를 담고 있음
- .git을 copy 함으로써 backup, clone 가능
Cloning
- 기존에 존재하는 git repo를 clone
- git clone [address]
Tracking new files and Recording changes
staged : Changes to be committed
unstaged(modified) : Changes not staged for commit
commit 시 발생하는 일
- Commit object <Commit> : root tree에 대한 포인터를 포함
- Tree<Structure> : 특정 폴더의 내용이나 파일명이 포함됨. 서브트리가 존재할 수도 있음
- Blob<File> : 커밋된 파일의 정보를 보관. 파일 하나하나마다 생성됨
- Commit object는 이전 commit의 object를 가리키는 포인터를 포함하고 있음(가장 첫 commit object 제외)
기본 명렁어
1) Basic
- command는 항상 working directory를 대상으로 적용
git status
- 파일이 어느 상태인지 보여줌
git add [file]
- commit을 위해 새 파일/변경된 파일을 staging area에 올림
- 이렇게 함으로써 version control 시작
- staged 상태의 파일을 로컬 디렉토리에서 수정 시
- 로컬 디렉토리, staging area 각각의 파일 내용이 달라짐
- (로컬 디렉토리의 파일 - 수정 적용 O, staging area 파일 - 수정 적용 X)
- 깃은 두 파일을 분리해서 관리함
- 로컬 디렉토리의 파일을 git add 하면 다시 하나의 파일로 인식됨
git commit, git commit -m “[message]”
- staged → git repo로 이동
- 기존의 staging area의 내용이 repo에 snapshot 처럼 기록되고, staging area의 내용은 모두 지워짐
git rm [file]
- working directory에서 삭제 + 해당 변화를 staging area로 올리기(add)
- rm [file]
- 깃에서 modified으로 인식
- add 명령어로 변화를 staging area로 올려야 함
git rm —cached [file]
- staging area에서 파일을 삭제하고 working directroy에서는 삭제하지 않을 때
- tracking 제거하는 역할
- 파일은 untracked로 상태 변경
git mv [fileA] to [fileB]
- 로컬에서 파일을 rename/moves + staging area에 변화 올리기(add)
mv [fileA] to [fileB]
- 로컬에서만 파일 변경 적용
- add 명령어로 변화를 staging area로 올려야 함
- ?? : untracked
2) Checking the status of Git
git status
- 파일의 현재 상태 보여줌
- M, A : staged
- M : modified but not staged
git diff
- git diff : 파일의 unstaged 변화 제공
- git diff --staged : 파일의 staged 변화 제공
git log
- who commited
- when the commit is made
- commit messages
- -p, --p 옵션 사용시 more details
- git log --author “user name” : 개인 contribution 확인
- 출력 포맷 설정
- git log --pretty=oneline : 한줄표기
- git log --pretty=format: “specifiers”
- specifiesr 예시 : “%h: %a, %ar”
- %h : check sum
- %an : author name
- %ar : author date
- specifiesr 예시 : “%h: %a, %ar”
3) Undoing actions
git commit --amend (re-commit)
- 가장 최근에 쓴 commit에다 특정 파일의 변화를 덮어쓰기(commit 합치기)
git restore --staged “staged file” (unstaging)
- staged → modified 상태 변경
- commit 상태만 아니면 이전의 commit 상태로 돌이키는 기능
git restore “modified_file” (unmodifying)
- modified → unmodified(=committed)
- 가장 최근에 commit 했던 파일 상태로 되돌리기
git reset --hard <comit checksum>
- 이전 커밋 상태로 롤백
- 커밋의 checksum 값을 알아야 함
4) Making a blacklist
.gitignore
- 깃 레퍼지토리에 추가되지 말아야 하는 파일 정의
'Git' 카테고리의 다른 글
Git branch (0) | 2023.11.02 |
---|---|
CMD | 깃&깃허브 사용법 (0) | 2021.08.21 |