Git & GitHub
Git과 CLI
김디니
2022. 7. 5. 22:52
Git이란?
- 분산 버전 관리 시스템이다.
- 버전 업데이트 시(diff) 추가/수정된 코드를 구별하고 수정 이유를 남길 수 있다.
- 여러 사용자들과의 교류가 쉽고 간단해지므로 협업 환경이 좋아진다.
분산 버전 관리 시스템 (DVCS)
- 원격 저장소(remote repository)를 통해 프로젝트의 히스토리를 클라이언트들과 협업자들과 공유한다.
CLI 란?
- Command Line Interface (터미널 / 명령 프롬포트)
- 터미널(명령 프롬포트)를 통해 사용자와 컴퓨터가 상호작용하는 방식을 뜻한다.
- CLI과 상반되는 개념은 GUI이다.
- GUI: 그래픽 기반의 인터페이스 (우리가 흔히 봐왔던 화면)
CLI 기본 구조
디렉토리 관리
- pwd (print working directory): 현재 디렉토리 출력 (현재 폴더의 위치)
- cd (change directory): 디렉토리 이동
- . : 현재 디렉토리, .. : 상위 디렉토리
ex)
~/Desktop/CLI/test 에서 상위 폴더로 다시 이동하기
$ cd ..
-> ~/Desktop/CLI
- ls (List): 목록
- mkdir (make directory): 디렉토리 생성
- touch: 파일 생성
- rm (remove): 파일 지우기
- 디렉토리(폴더)는 지울 수 없다
- rm -r: 디렉토리 지우기
- 폴더 안에 있는 파일을 함부로 지우지 못하게 하기 위해서 -r을 붙인다.
(FYI, 폴더 이름의 첫 글자를 쓰고 tab을 누르면 폴더 이름이 자동으로 뜬다.)
기본 흐름
- 작업
- 변경된 파일을 모아 (add 하여 Staging area(중간 공간)를 만들고)
- 새로운 버전을 만든다 (commit)
Staging area가 필요한 이유는?
→ 하나의 버전으로 등록하기 전의 임시적인 공간이다.
→ 수정된 파일들을 모아서 하나의 버전으로 만들기 위해 존재한다.
게임 버전 업그레이드(출시) 전, 테스트 서버와 같은 맥락이다.
최종 저장 용량을 최소화하기 위해 테스트 보드로서 사용하기 위함이다.
구조
- Working Directory (1통)
- Staging Area (2통)
- Repository (3통)
기본 명령어
init
$ git init
- 저장소(repository)를 만든다.
- (master) 표기가 뜬다.
add
$ git add <file>
- working directory에서의 변경된 내용을 staging area에 추가하기 위해 사용한다.
- untracked → staged 상태로 변경한다.
- 1통에서 2통으로 이동한다. (working directory → staging area)
commit
$ git commit -m '<커밋메세지>'
- staged 상태의 파일들을 버전으로 기록한다.
- 파일이 달라지지 않으면 성능을 위해 파일을 새로 저장하지 않는다. (공간 효율적)
기본 흐름
modified: 파일이 수정됨 (add 명령어로 staging area(2통)으로 이동)
staged: 수정된 파일을 곧 커밋이라고 표시한 상태 (commit 명령어로 저장소(3통)으로 이동)
committed: 커밋된 상태
log
$ git log
- 저장소(3통)에 기록된 커밋을 조회 (커밋은 버전과 같은 맥락)
- $ git log -1 : 최근 한개의 커밋 가져오기
- $ git log --oneline: 한 줄로 표시하기
- $ git log -2 --oneline: 최근 2개를 한줄로 보여주기
- 버전 확인 (author, date 등의 정보가 나온다)
status
- 파일의 상태를 확인하기 위해 사용한다.
- Tracked: 버전으로 관리되고 있는 파일
- Unmodified: status에 나타나지 않음
- Modified: 변경되었지만 커밋이 되지 않을 상태 (Changes not staged for commit)
- Staged: 곧 커밋될 상태 (Changes to be committed)
- Untracked: 새로운 버전으로 분리된 적 없는 파일 (파일을 새로 만든 경우)
- Tracked: 버전으로 관리되고 있는 파일
- Working Directory(1통)과 Staging Area(2통)을 확인한다.