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을 누르면 폴더 이름이 자동으로 뜬다.)

 

기본 흐름

  1. 작업
  2. 변경된 파일을 모아 (add 하여 Staging area(중간 공간)를 만들고)
  3. 새로운 버전을 만든다 (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: 새로운 버전으로 분리된 적 없는 파일 (파일을 새로 만든 경우) 
  • Working Directory(1통)과 Staging Area(2통)을 확인한다.