1. 버전관리 시스템의 종류
동작하는 방식에 따라 분류
1-1. 로컬 vcs
단순히 로컬(내 컴퓨터)에서 버전관리를 한다.
협업을 위해 연결같은 기능을 하지 않는 것 즉, 혼자 하던 것을 시스템을 설치해 버전을 관리하는 것이다. 백업, 복구등 버전 관리가 가능하지만 해당 컴퓨터에서만 사용하므로 협업을 할 수 없다.
목적: 버전관리를 좀 더 깔끔하게 할 수 있다.
사진 출처: github
1-2. 중앙집중식 vcs
중간에 컴퓨터를 하나 두고 이 컴퓨터에 모두 집중하는 것이다.
내 컴퓨터가 아닌 중앙의 다른 컴퓨터에서 버전을 관리한다. 그 중에서도 필요한 부분만 가지고 온다. 즉 3.0.1의 모든 파일을 가져오는 것이 아닌 특정 부분만 가져올 수 있다.
로컬 vcs와 다른점: 다른 컴퓨터도 해당 컴퓨터와 연결해 협업이 가능하다.
대표: svn, cvs
단점
- 모든 버전 관리 관련 동작은 서버에서 처리되어야 하므로 서버의 부하가 크다.
- 서버가 죽거나 장애가 발생하면 버전 관리가 이루어지지 않는다.
- 오프라인 상태에서는 버전 관리 시스템을 사용할 수 없다.
- 모든 버전 관리 관련 동작은 적어도 한 번 서버를 경유해야 하므로 속도가 느리다. 하다못해 로그를 보는 것 조차 서버에서 데이터를 받아와야 하므로 느리다.
- 서버에서 데이터가 망가지거나 삭제되면 복구하기 매우 어렵다.
사진 출처: github
1-3. 분산 vcs
분산 vcs는 저장을 내 컴퓨터에도 하고 다른 컴퓨터에도 한다. 중앙 집중식은 필요한 파일만 가져와서 작업하는 것에 비해 분산 vcs는 필요한 버전을 모두 가져와 작업한 뒤 버전 전체를 저장한다. 중앙집중식과 다른 점은 통인가 아닌가이다. 폴더를 모두 가져오면 충돌이 적고 충돌을 해결하기 쉽다.
a와 b가 같은 파일을 동시에 가져가서 a가 수정후 저장을 한 뒤, b가 수정후 저장한다면 중앙 컴퓨터는 혼란스러울 수 있다. 이 때문에 관리포인트가 줄어드는 묶음단위로 관리한다.
좀 더 안정적이라는 장점이 있다. 따라서 이러한 장점이 있는 분산 vcs 를 주로 사용한다.
대표: git, mecurial, bazzar
사진 출처: github
2. 그렇다면 git은? -> 분산식 버전 관리 시스템!
git은 로컬(내 컴퓨터) 시스템이다. github는 git들이 모인 시스템으로 로컬에 깔리는 것이 아니라 원격으로 중앙에서 관리되는 프로젝트의 버전을 관리하는 시스템이다.
git은 설치해서 사용하는 일종의 프로그램이다.
왜 사용할까?
1. git 없이 로컬에서 버전을 관리한다고 해보자. 한 파일안에 1.0.1을 두고 복사하여 수정한 뒤 1.0.2를 만들고 1.0.3을 복사해두고 계속 쌓아갈 것이다. 폴더 크기가 작으면 모르겠으나 크면 굉장한 메모리낭비가 아닐 수 없다! 무료로 이 모든 것들을 저장해주는 git을 사용하는 것이다.
2. github에 올려두면 다른 기기에서 폴더를 가져와 작업할 수 있다는 장점이 있다. 즉, 노트북과 데스크탑을 옮겨가며 프로젝트를 진행할 때 작업하고있는 프로젝트를 올리고 받아와 사용할 수 있는 것이다. 같은 맥락으로 협업을 위한 도구가 된다.
정리
- git은 내 컴퓨터 안에서 버전을 관리해주는 시스템이자 깃허브와 소통하는 시스템이다. 내 컴퓨터에 git이 깔려있으면, 버전 관리를 로컬로 할 수 있을 뿐 아니라 github와 소통을 할 수 있다.
- github는 원격 컴퓨터에서 백업을 담당하는 시스템이자, 내 컴퓨터와 별도로 버전 관리도 해주는 친구. 다른 컴퓨터에도 git이 깔려있으면, github를 통해서 소통을 할 수 있다.
2. GUI vs CLI
차이점: 명령을 하는 방법
CLI(Command-Line Interface): 셸에서 글자를 입력해서 컴퓨터에게 명령을 내리는 것
GUI(Graphical User Interface): 그래픽을 통해 컴퓨터에게 명령을 내릴 수 있도록 사용자에게 화면을 제공
shell 셸이란? 운영체제와 대화할 수 있는 도구 - MS DOS, cmd, powershell, bash, 터미널 등
git은 CLI를 사용한다.
3. 자주 쓰는 명령어 - ls, cd, mkdir
ls : 해당 디렉토리에 있는 파일과 폴더 출력
mkdir : 폴더 생성
cd : 디렉토리 이동 ex) $cd .. : 상위 디렉토리로 이동
init: 해당 폴더가 git 로컬 저장소로 설정
4. 추가 - init 해제하기
cd로 이 파일 저파일 돌아다니다가 파일 확인을 하지 않고 원드라이브 파일을 git init 해버렸다.
숨겨진 .git 파일이 만들어지고 로컬 저장소로 지정되었다.현재 선택한 폴더의 모든 git 정보들이 만들어진다. 해제해보자!
rm -r .git
해당 디렉토리에서 위 명령어를 입력하면 master가 사라지며 로컬저장소 지정이 해제된다.
출처: https://heekangpark.github.io/git/vcs, https://git-scm.com/book/ko/v2/%EC%8B%9C%EC%9E%91%ED%95%98%EA%B8%B0-%EB%B2%84%EC%A0%84-%EA%B4%80%EB%A6%AC%EB%9E%80%3F
Git - 버전 관리란?
1.1 시작하기 - 버전 관리란? 이 장에서 설명하는 것은 Git을 처음 접하는 사람에게 필요한 내용이다. 먼저 버전 관리 도구에 대한 이해와 Git을 설치하는 방법을 설명하고 마지막으로 Git 서버를 설
git-scm.com
'타입스크립트로 함께하는 웹 풀 사이클 개발(React, Node.js) > TIL' 카테고리의 다른 글
웹 풀사이클 데브코스 TIL 5일차 - branch, 깃 플로우, merge (0) | 2023.11.21 |
---|---|
웹 풀사이클 데브코스 TIL 4일차 - 토큰, 레포지토리 받아오기, branch란? (0) | 2023.11.20 |
웹 풀사이클 데브코스 TIL 3일차 - git 명령어, commit flow, github에 레포지토리 올리기 (0) | 2023.11.17 |
웹 풀사이클 데브코스 TIL 1일차 - 프로젝트, Markdown (0) | 2023.11.15 |
[프로그래머스] 데브코스 웹풀사이클 1기 합격 후기 (0) | 2023.11.15 |