Git이란?

Git은 분산형 버전 관리 시스템이다.
버전 관리 시스템은 파일의 변화를 버전별로 기록하고 유지하여 준다.
Git은 분산형이기 때문에 같은 파일을 서로 다른 로컬 저장소에서 관리하고 편집할 수 있다.

Git의 구현 형태

Git은 파일을 4가지 상태로 분류한다.

  • untracked : 파일의 변화를 추적하지 않는 상태
  • tracked : 파일의 변화를 추적하는 상태 — 3개의 세부 상태로 나뉜다.
    • unmodified : 이전 버전과 변화가 없는 상태
    • modified : 이전 버전과 변화가 있는 상태
    • staged : 이전 버전과 변화가 있고 그 변화를 반영할 준비가 된 상태

Git은 commit 별로 기록하여 구분한다.

Git은 각각의 commit에 hash값을 달아 구분하고 각각의 commit마다 해당 파일을 저장한다.
단 이전 commit과 변화가 없는 파일의 경우, 이전 파일의 포인터만 저장한다.

Branch

브랜치를 이용하여 한명 이상의 사용자가 서로 다른 작업을 진행할 수 있습니다.
또한 브랜치를 병합하여 여러 작업내용을 하나로 합칠 수 있습니다.

Git 기본 명령어

git add [file]

[file]을 untracked, modified 상태에서 staged 상태로 변경한다.

git rm [file]

[file]을 삭제하고 staged상태로 변경한다.

  • git rm –cached [file]

    [file]을 untracked상태로 변경한다.

git branch [name]

[name]이라는 이름의 새 브랜치를 생성한다.

  • git branch -f [branch] [commit]

    [branch]를 [commit]으로 이동한다.
    [commit]은 다른 브랜치나 커밋의 해시값이 될 수 있다.

git checkout [branch]

[branch]를 선택한다.

git commit

변경된 사항을 새로운 커밋으로 만들어 기록한다.

  • git commit -a

    modified상태에 있는 모든 파일을 staged상태로 변경한 후 커밋한다.

  • git commit -m [msg]

    commit message를 [msg]로 설정하고 커밋한다.

git push

로컬 저장소에 커밋된 내용을 원격저장소로 전송하여 저장한다.

git fetch

원격 저장소에 커밋된 내용을 로컬 저장소에 전송하여 저장한다.

git merge [branch1] [branch2]

[branch1]을 [branch2]에 병합한다.