본문 바로가기
TIL

TIL 2일차 - VCS/ Git

by 케이리케리 2023. 11. 16.

버전관리 시스템(Version Control System)

  • 로컬 VCS
  • 중앙집중식 VCS
  • 분산형 VCS

 

1. 로컬 VCS

말그대로 로컬에서 버전관리를 한다는 의미
내 컴퓨터에서 혼자 업무를 할 때 버전관리를 하던 것을 시스템을 통해 좀 더 쉽게 버전관리 하는 것이다.
그래서 내 컴퓨터에서만 버전관리를 하는 것이기때문에 협업이 불가능하다. 단순 버전관리만을 하는 목적
 

2. 중앙집중식 VCS

중앙 집중식 서버 관리 시스템 (출처:https://git-scm.com)

ex) SVN, CVS
중간에 다른 컴퓨터(서버)를 두고 이 컴퓨터에 모든 것을 저장을 한다.
내 컴퓨터가 아닌 다른 컴퓨터가 중심이 되어 그 컴퓨터에 백업용도로 버전들을 저장을 한다. 
그래서 다른 컴퓨터에서 내가 필요한 파일만(버전 통째로 X) 가져와서 작업을 한다.
 
중앙집중식 VCS은 백업 복구, 버전 관리뿐만 아니라 협업까지 가능하다. 왜냐하면 중앙 컴퓨터에 버전들이 저장되어 있고, 또 다른 컴퓨터(사용자)가 언제든지 중앙 컴퓨터와 네트워크 연결만 가능하면 되기때문이다.


 
3. 분산 VCS

분산 버전 관리 시스템(출처:https://git-scm.com)

ex) Git, Mecurialm Bazaar
- 분산 VCS는 파일 하나만 가져오는게 아니라 프로젝트(=폴더) 통째로 가져와 작업을 한다.
- 프로젝트 통째로 가져와 작업을 하게되면 관리 포인트가 파일을 가져와 작업할 때보다 작아지기때문에 관리가 편하고 안정적이다.
(수정이나 작업을 하는 파일들이 한 두개가 아니라 엄청 많다. 수정한 파일이 10개라 가정하면, 파일 단위로 관리를 하면 갯수가 10개지만 프로젝트 단위로 관리하면 수정된 10개 파일이 있는 1개의 프로젝트일 뿐)

 

 

  로컬 VCS 중앙집중식 VCS 분산 VCS
버전 관리 로컬(=내 컴퓨터) 중앙 서버 중앙 서버
협업 X O O
클라이언트가 중앙서버에서 받아오는 작업 단위   필요한 "파일만" 필요한 "프로젝트 폴더" 통째로
종류   SVN, CVS Git, Mecurialm Bazaar

 

 

분산 버전 관리 시스템인 Git

 
 Git 

로컬 시스템, 나의 컴퓨터에 설치되는 일종의 프로그램/시스템이다.
내 컴퓨터 안에서 버전을 관리해주는 시스템 + 깃허브와 소통하는 시스템
 
 GitHub 

원격으로 중앙에서 프로젝트를 백업해두고, 버전 관리 해주고, 협업을 가능하게 해주는 시스템이다.
원격 컴퓨터에서 백업을 담당하는 시스템 + 내 컴퓨터와 별도로 버전 관리도 해주는 시스템
 


내 컴퓨터에 Git이 깔려 있으면, 버전 관리를 로컬로 할 수 있을 뿐 아니라 GitHub와 소통(백업, 복구, ...)할 수 있다.
다른 컴퓨터에도 Git이 깔려 있으면, GitHub를 통해서 소통(다운로드, 복제, 백업, ...)할 수 있다.
 


 

 

Git 설치

 

Git

git-scm.com

 
Git에 필요한 메뉴얼

 

Git - Git 설치

이 책은 Git 2.0.0 버전을 기준으로 썼다. 대부분의 명령어는 그 이전 버전에서도 잘 동작하지만, 몇 가지 기능은 아예 없거나 미묘하게 다를 수 있다. Git의 하위 호환성은 정말 훌륭하기 때문에 2.0

git-scm.com

 
Git 버전 확인
- Mac: terminal.app 실행 > git --version 입력
- Windows: [윈도우] > git bash 생겼으면 실행 > git --version 입력


 CLI vs GUI 

 명령을 하는 방법의 차이
 

  • CLI(Command Line Interface; 명령 줄 인터페이스): 셸에서 글자를 입력해서 컴퓨터에게 명령을 내림 
     
    cf. shell 셸
        특정 프로그램을 명령하기 위한 것이 아니라 컴퓨터에 전체적으로 명령을 입력하기 위한 것임.
        ex) MS DOS, 명령 프롬프트(cmd), powershell, ...bash / Terminal, Windows Terminal
       
  • GUI(Graphic User Interface): 그래픽으로 컴퓨터에게 명령을 내릴 수 있도록 사용자에게 화면의 제공

 

 

Git에서 자주 쓰는 명령어

 

- 현재 디렉토리에 있는 파일,폴더 목록: ls
- 현재 디렉토리에 숨긴 파일을 포함해서 모든 파일,폴더 목록: ls -a
- 폴더 생성: mkdir [생성할 폴더명]
- 다른 폴더로 이동: cd [이동하고 싶은 폴더명]
- 이전 폴더로 이동: cd ..
- git 버전 확인: git --version
- 파일 상태 확인, git 저장소 상태 확인: git status
- 깃 저장소 만들기: git init (작업 중인 프로젝트 폴더를 버전관리 시작할 때 로컬에 깃 저장소 만듦)

 

👉 git 저장소 만들기

git을 컴퓨터에 설치했다고 해서 git이 모든 파일과 폴더들을 버전관리를 하지않는다.
그래서 git에 먼저 프로젝트 폴더를 버전 관리해달라고 요청해야한다.

  git init  

git init 명령어는 Git 저장소를 초기화한다.

기존 디렉토리를 Git 저장소로 변환하거나, 새로운 프로젝트를 시작할 때 처음부터 Git 저장소를 설정할 때 사용된다. 

 

$ git init
Initialized empty Git repository in /Users/GitTest/test.txt/.git/

" Initialized empty Git repository in ~ "라는 문구가 나오면 git init 성공

 

 

git init을 실행 -> 현재 작업 중인 디렉토리에 .git 이라는 (숨겨진) 하위 디렉토리가 생성되고, 프로젝트 폴더를 git 저장소로 관리

 

 하지만 이 명령만으로는 아직 프로젝트의 어떤 파일도 관리하지 않는다.

 

< 헷갈리는 단어 >
* initialize
    v. set to the value or put in the condition appropriate to the start of an operation
* Git 저장소
    프로젝트의 버전 관리를 위한 로컬 저장소, Local Repository
* 원격 저장소
    네트워크 상에 위치한 중앙 저장소,
    GitHub 등의 플랫폼에 프로젝트를 업로드하면 해당 플랫폼에서 제공하는 원격 저장소가 생성된다.