본문 바로가기

STUDY/기타 IT

[Git] VCS(Version Control System) / Git

 

이 글은 24.01.29에 본인 벨로그에 작성했던 글을 옮겨 온 것이다.

 

VCS(Version Control System)

  • 버전version이란?
    : 유의미한 변화가 결과물로 나온 것으로, 자세히 말하자면 특정 매체에서 수정이 이루어질 때 각각의 수정을 마친 결과물을 의미한다.

  • VCS(Version Control System)란?
    : 말 그대로, 버전을 관리하는 시스템. 대표적으로 Git이 있다.
    CMS(Configuration Management System형상 관리 시스템)로 불리기도 한다.

  • VCS는 왜 필요한가?
    : 프로젝트 개발이란,

    상기 이유들로 인해 VCS는 프로젝트 개발에 반드시 필요하다.

  • 분산 VCS
    : VCS가 여러 형태를 거쳐 개선되어, 오늘날 쓰이고 있는 VCS 중 하나. Git 또한 분산 VCS다. 다른 형태의 VCS도 있으나, 요즘은 대부분 VCS로 Git을 사용한다.




Git

Git의 버전관리

  • VCS의 데이터 저장 방식

    파일의 초기 버전을 가져오려면 데이터의 연산량이 많다는 단점이 있었다.
  • Git의 데이터 저장 방식

    Git의 데이터 저장 방식의 핵심은 스냅샷을 이용해 버전을 관리한다는 것.
  • Git의 구성요소

    1) 작업 디렉토리Working Directory : 흔히, 우리가 보는 폴더라고 생각하면 된다. 버전 관리의 대상이 위치하는 공간이다.
    2) 스테이지Stage(Staging Area, Index) : 다음 버전이 될 후보가 올라가는 공간
    3) 저장소Repository : 버전이 만들어지고 관리되는 공간


    스테이지와 저장소는 git이 관리하는 가상의 공간이다.
    하나의 버전은, 아래와 같은 과정을 거쳐 만들어진다.



    W.D에서 변경사항 생성 후 'Add'
    => 버전이 될 후보들이 스테이지에 등록
    => 스테이지에서 'Commit'
    => 스테이지의 내용이 버전이 되어 저장소에 등록
  • Git에서 파일의 상태

    1) Untracked : Add를 하지 않아 Git에 아무것도 등록되지 않은 상태. 즉, Git에서 해당 파일은 관리대상이 아님.
    2) Tracked : Add 후 스테이지에 올라간 후의 상태. 관리대상이 됨.
    2-1) Staged : 작업 디렉토리에서 스테이지로 Add 된 파일. 버전 후보.
    2-2) Committed : 스테이지에서 저장소로 Commit 된 파일. 버전 생성.
    2-3) Modified(Unstaged) : 버전 생성 후 수정된(Edit 된) 파일. 이미 Commit 된 파일을 수정한 것이기 때문에, 이 상태에선 Commit할 수가 없다. 커밋 하기 위해서는 다시 Stage로 보내야 한다.

 

Git 설정

  • Git 설정 기본 문법


  • 유저 이름, 이메일 설정


  • CRLF(End of Line) 설정 : Line의 마지막을 표기하는 문자.


  • Editor 설정 : 유저별로 어떤 에디터를 쓸 지 설정 가능.


  • Git 전체 설정 확인


  • Git 범위별(Global? local? 등...) 설정 확인


  • Git 항목별(유저 이름, CRLF, 에디터, branch 이름 등...) 설정 확인

    ** git config -help 를 입력하면 명령어 관련 도움말을 볼 수 있다.

 

Git Repository

  • 저장소Repository


  • Git Repository 만들기
    Repository로 사용하고자 하는 폴더 경로에 접속해서 아래 코드 실행
    => 해당 폴더가 git의 repository 가 된다.

    실습해보자.
  1. git_ws라는 폴더 내에, test_project라는 폴더를 만들어 해당 폴더를 local repository로 만들기.

 

Git 기본 사용법

  • Git Status


  • Git add


  • Git commit
    => Staged 상태를 생략 가능하다는 것은, add와 commit까지 한 번에 할 수 있다는 말이다.


  • Git ignore


  • Git rm(remove)


  • Git mv(move)

 

Git history

  • Git log : 저장소의 커밋 이력을 시간 순으로 보여준다.

    이 외에도 아래와 같이 여러 옵션을 줄 수 있다.


    1) -n : 최근 n개의 커밋만 표시

    2) --skip n : 최근 커밋 중 n개의 커밋을 생략하고 표시

    3) -p : 커밋 별 변경된 내용을 출력

    4) --oneline : 커밋 내용을 간단하게 한 줄만 출력

    5) --author=username or useremail : 유저 별 커밋 내용 출력

    6) -S 검색어 : 커밋의 변경사항 중 '검색어'를 포함하는 커밋 출력

    7) --grep 검색어 : '검색어'를 포함하는 커밋 메시지를 갖는 커밋 출력