2023.11.16(목)
⌨️Git CLI
+) 리눅스 기본 명령어
💡Git의 Stage와 Status
- Git의 3가지 영역
- Working Directory
- 사용자가 작업하고 있는 project의 directory
- project의 특정 버전을 checkout한 것
- Staging Area
- commit할 파일에 대한 정보를 저장하는 곳
- commit할 snapshot을 만드는 곳
- Git Repository
- project의 metadata와 database를 저장하는 곳
- Staging Area에 있는 파일들을 commit해서 Git Repository에 영구적인 snapshot으로 저장


- Git의 4가지 파일 상태
- Untracked
- Git으로 버전 관리를 하지 않는 상태
- Git이 추적 관리하지 않는 상태
- Unmodified
- git add로 파일이 Staging Area에 올라갔지만 파일에 변경은 없는 상태
- Git이 추적 관리하는 상태
- Modified
- Git이 추적 관리하던 파일이 수정된 상태 (git add 후 파일이 수정되었을 때)
- 다시
git add
로 수정된 최신 버전의 파일을 Stage해주어야 함
- Staged
- Staging Area에서 file이 Staged 되어 반영된 상태
- commit에 포함됨

🚩Git Basic Commands
git init
- Git을 사용하기 위한 initialization
.git
directory📁가 생성(이미 있어도 override하지는 않음)되고 해당 프로젝트 directory는 Git repository(저장소)가 됨
git add <file>
- Add to Staging Area
- Untracked → Tracked(Staged)
- Modified → Staged
- file이 아니라 directory를 add하면 directory 내의 모든 파일에 대해 적용됨
git add .
: 모든 파일에 대해 add
git status
- 현재 파일들의 상태 확인
- 'Git의 4가지 파일 상태' 용어를 따름
git commit
🔗
- Git 설정에 등록된 editor(default Vim)가 실행 →
i
를 눌러 입력 모드로 전환 → 첫 줄에 message 입력 → esc
를 눌러 명령 모드로 전환 → wq
입력하여 Vim 저장하고 종료
- 보통
-m
옵션을 사용하여 git commit -m "commit message"
로 inline으로 메시지 첨부
- 변경 내용이 없어도 commit하려면
git commit --allow-empty -m "Empty Commit Message"
git log
git push -u <remote> <branch>
- local branch를 원격 저장소에 올리기
-u
옵션은 보통 최초에 push할 때 사용 → local branch와 remote branch가 연결되어 다음에는 git push
만 써도 됨
git remote -v
- 연결된 원격 저장소 확인
- 원격 저장소 추가 :
git remote add <remote> <https://url-of-the-repository.git>
- 원격 저장소 연결 제거 :
git remote remove <name>
git clone <https://url-of-the-repository.git>
- 특정 git repository를 사용자의 working directory에 복제(copy)
- 주로 프로젝트를 처음 가져올 때 사용
- 뒤에 clone할 directory 위치도 명시할 수 있음
- 현재 폴더에 바로 clone :
git clone <https://url-of-the-repository.git> .
git pull <remote> <branch>
- 현재 작업 중인 local branch를 원격 저장소의 최신 버전으로 update
- 이미 존재하는 local 저장소를 업데이트할 때 사용
git fetch
와 git merge
의 조합 (git fetch
는 원격 저장소의 변경 사항을 가져오고, git merge
는 가져온 변경 사항을 local branch에 병합)
🔄️Modify & Undo
- Git Configuration Settings
- 사용자 이름 설정 :
git config --global user.name "your_name"
- 사용자 이메일(Github 가입 시 사용한 이메일) 설정 :
git config --global user.email "your_email"
- git init을 통해 생성한 local project의 default branch 수정 :
git config --global init.defaultBranch <branch>
- 정보 확인 :
git config --list
- 파일 상태를 Unstage로 변경
git rm --cached <file>
🔗
- 해당 file을 Unstage & Untracked file로 변경
--cached
option을 사용하지 않으면 file까지 삭제함
git reset HEAD <file>
🔗
- 해당 file을 단순히 Unstage만 하고 file은 여전히 tracking
- Commit 수정
git commit --amend
🔗
- text editor가 열리고 commit을 수정할 수 있음
-m
옵션을 사용하여 git commit --amend -m "new commit message"
로 inline으로 작업 가능
- 이렇게
--amend
옵션으로 commit을 고치는 작업은, 추가로 작업한 일이 작다고 하더라도 이전의 commit을 완전히 새로 고쳐서 새 commit으로 변경하는 것을 의미
- 이전의 commit은 일어나지 않은 일이 되는 것이고 당연히 history에도 남지 않음
🚥Git GUI
- Visual Studio Code의 Source Control에서 Git GUI를 지원한다.

- 추가로 Extensions에서
Git History by Don Jayamanne
를 설치하면 git log에 의한 history까지 볼 수 있다.

Branch, pull에 관해서는 다음 시간에!
상세하게 잘 작성하셨네요! 잘 읽었습니다 :)