GIT

Rosevilleage·2023년 2월 16일
0

깃에대한 기초적인 부분과 리포지토리를 어떻게 관리하는지에 대해 정리한다.

Git

깃은 형상 관리 도구(configuration management tool)로 버전 관리 시스템이라고도 한다.

  • 버전 관리 시스템

    버전 관리 시스템이란 파일의 변화를 시간에 따라 기록했다가 추후에 특정 시점의 버전을 다시 꺼내올 수 있는 시스템이다.

    * 버전관리 시스템의 종류

    1. 로컬 버전 관리 (VCS) : 간단한 데이터베이스를 사용해 파일의 변경 정보를 관리,
    2. 중앙 집중식 버전 관리 (CVCS) : 파일을 관히하는 서버가 별도로 존재하고 클라이언트가 중앙 서버에서 파일을 받아서 사용, 서버 다운 시 복구 불가능
    3. 분산 버전 관리 시스템 (DVCS) : DVCS에서 클라이언트는 저장소와 히스토리를 전부 복제, 서버에 문제가 생기면 복제물로 다시 작업 가능 서버, 복원 가능, 리모드 저장소 존재 => 동시에 다양한 그룹과 협업 가능

    git은 DVCS에 해당

  • Git의 특징

    • git은 다른 유형의 버전 관리 시스템들터럼 파일의 목록이나 파일들의 집합을 관리하지 않고, 데이터를 파일 시스템 스냅샷의 연속으로 취급한다. 따라서 크기가 매우 작고, 커밋이나 프로젝트의 상태를 저장하는 순간을 중요하게 여겨 파일이 달라지지 않았으면 새로 저장하지 않는다. 단지 이전 상태의 파일에 대한 링크만 저장한다.

    • 거의 모든 명령이 로컬 파일과 데이터만 사용하기 때문에 네트워크에 있는 다른 컴퓨터가 필요하지 않다. 프로젝트의 모든 히스토리가 로컬 디스크에 있기 때문에 모든 명령이 순식간에 실행된다. 이는 오프라인에서도 커밋이 가능하다는 것이다.

    • Git의 세 가지 상태

      Git은 파일을 committed, modified, staged 세 가지 상태로 관리한다.
      Committed : 데이터가 로컬 데이터베이스에 안전하게 저장된 상태
      Modified : 수정한 파일을 아직 로컬 데이터베이스에 커밋하지 않은 상태
      * Staged : 현재 수정한 파일을 곧 커밋할 것이라고 표시한 상태

    이 세가지 상태는 Git 프로젝트의 세 가지 단계와 연결되어 있다.

    • 워킹 트리, staging area, git 디렉토리

      1. Git 디렉토리는 Git : 프로젝트의 메타데이터와 객체 데이터베이스를 저장하는 곳. git clone을 할 때 git디렉토리가 만들이진다.

      2. 워킹 트리 : 프로젝트의 특정 버전을 checkout한 것.

      3. stageing area : 단순한 파일로 곧 커밋할 파일에 대한 정보를 저장한다.

        staging area는 git 디렉토리에 있고, git 디렉토리는 작업하고 있는 디스크에 있다. 그리고 안에서 압축된 데이터베이스에서 파일을 가져와 워킹 트리를 만든다.

        git으로 하는 일은 기본적으로 워킹 트리에서 파일을 수정 => staging area에 파일을 stage해 커밋할 스냅샷 모으기 => 커밋으로 git 디렉토리에 영구적인 스냅샷으로 저장 으로 이루어 진다.

    • git 리포지토리

      1. 로컬 리포지토리 (local repository) : 사용자의 컬퓨터에 저장된 로컬버전의 프로젝트 저장소
      2. 원격 리포지토리 (remote repository) : 인터넷이나 네트워크에 있는 외부 서버의 프로젝트 저장소

      git에서의 작업은 기본적으로 로컬 리포지토리에서 수정 커밋 후에 푸쉬로 원격 리포지토리에 추가하는 과정을 지닌다.

  • Git 기초 명령어

    • git init : 버전관리를 하고자 하는 폴더에 로컬 리포지토리를 생성

    • git commit : staging area에 있는 데이터를 git 디렉토리에 저장. -m을 사용하면 커밋 메시지도 같이 저장

    • git log : 커밋 내역 확인

    • git reset HEAD^ : 커밋(하나) 취소

      • 옵션에 따라 갯수는 달라짐
    • git pull : 리모트 리포지토리의 변경사항을 로컬 리포지토리에 적용

    • git add : 로컬 리포지토리의 변경사항을 staging area에 적용

    • git clone : 원본 리포지토리를 복사해 컴퓨터에 로컬 리포지토리를 생성

    • git push : git 디렉토리에 저장되어있는 로컬 리포지토리의 커밋을 리모트 리포지토리에 적용

    • git branch : 이름을 지정하면 독립적인 작업 공간을 만든다. 브랜치를 생성 후 커밋하면 병합하지 않는이상 기존 main 브랜치는 변경되지 않는다. 이름 지정없이 사용하면 HEAD(branch를 가리키는 가상의 커서) 브랜치를 표시

      • git branch -a : 모든 브랜치 확인
    • git checkout : 브랜치 이동


    참고 사이트

    Git-Git기초

  • https://git-scm.com/book/ko/v2/%EC%8B%9C%EC%9E%91%ED%95%98%EA%B8%B0-Git-%EA%B8%B0%EC%B4%88

    갓대희의 작은공간-[웹개발 기초]Git 이란

  • https://goddaehee.tistory.com/91

0개의 댓글