2022.04.18_버전 관리 시스템과 Git

버전 관리 시스템

버전 관리 시스템은 파일의 변화를 기록, 추후 특정 버전을 로드할 수 있는 시스템이다.
현재 버전 관리는 로컬 / 중앙집중형 / 분산형으로 나뉘며 Git은 분산형에 속하며, 변화의 히스토리를 각 개인이 관리하게 된다.

Git

Git은 데이터를 파일 시스템 스냅샷(Snapshot)의 연속으로 취급, 파일이 달라지지 않으면 새로 저장하지 않고 이전 상태에 대한 링크(Link)만 저장한다.

Git은 파일을 아래 세 가지 상태로 관리한다.

- Committed : 데이터가 로컬 데이터베이스에 저장됨.
- Modified : 수정 파일이 로컬 데이터베이스에 커밋되지 않음.
- Staged : 현재 수정한 파일을 곧 커밋할 것이라는 상태
    


위 참고자료의 디렉토리와 영역에 대해서 알아보겠다.

- Git Directory : 다른 컴퓨터에 있는 저장소를 복제(clone)하거나 프로젝트 생성(init)시 만들어진다.작업중인 디스크에 있고 해당 디렉토리 안에 압축된 DB에서 파일을 불러와 Working Directory를 만든다.
- Working Directory : 프로젝트의 특정 버전을 체크아웃(checkout)한 것이다.
- Staging Area : Git Directory에 있으며 단순한 파일이다. 커밋할 파일에 대한 정보를 저장하며 인덱스(Index)라고도 한다.

Git 명령어

로컬 사용 명령어

git commit : 수정 파일 업로드

  • ex)

    위 사진과 같이 명령어 한번 입력시마다 커밋이 추가된다

git branch : branch 추가

  • ex)

    위 명령어로 branch 추가 후 커밋 실행 시, 별도의 분기로 커밋된다.
    명령어 중 -f를 붙이면 특정 위치로 branch 이동도 가능하다.
  • ex) git branch -f branch_1;

git checkout : 지정한 위치로 'HEAD'가 이동한다.

  • ex) git checkout main;
  • ex) git checkout C2;

git merge : 선택된 branch로 다른 branch를 병합 후 커밋한다.

  • ex)
    (branch_1 선택 중)git merge main;

    (main 선택 중)git merge branch_1;

git rebase : 선택된 branch의 내용을 복사하여 다른 branch로 병합 후 붙여넣는다.

  • ex)
    (branch_1 선택 중)git rebase main;

    명령어 중 -i를 붙이면 추가로 branch 내 순서를 바꿔 이동도 가능하다.
  • ex)
    git rebase -i main

git reset : 선택된 커밋을 삭제하고 이전으로 branch 이동
git revert : 선택된 커밋을 유지한 상태로 이전의 커밋을 추가

  • ex) git reset C2
  • ex) git revert C2

git cherry-pick: 입력한 커밋을 복사

  • ex) git cherry-pick C2 C3

git tag : 입력할 태그(설명)을 지정된 커밋에 추가. 주로 버전명 표시에 사용함.

  • ex) git tag ver1.5.35 C2

원격 사용 명령어

git clone : 원격 저장소를 로컬로 복제

  • ex) git clone

git fetch : 원격 저장소의 내용을 로컬로 가져오는 것

  • 로컬에 없는 커밋 다운로드
  • 원격브랜치 업데이트
  • 원격 브랜치 : 원격 저장소의 브랜치 추적

git pull : (git fetch + git merge)

  • 원격 저장소의 내용을 로컬로 가져와 branch를 병합

git push : 로컬의 내용을 원격 저장소로 업로드

좋은 웹페이지 즐겨찾기