[데브코스 TIL] Day 2 - 프로젝트 관리의 중요성 - 웹 풀 사이클 데브코스 TIL

김진환·2023년 11월 15일
3
post-thumbnail

'23.11.15(수) 웹 풀 사이클 데브코스 TIL

Git 기본이론

오늘은 VCS의 종류와 Git의 시작에 대해 학습했습니다.

🎛️ 버전 관리 시스템의 종류

VCS(버전 관리 시스템)의 종류는 크게 세 가지로 분류한다.

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

VCS의 기본적인 사용 목적

지난 시간에 학습한 내용이다.

  • 버전 관리
  • 백업 및 복구
  • 협업

1. 로컬 VCS


출처: https://heekangpark.github.io/

Local 환경은 다른 디바이스, 유저와 연결이 없는 내 컴퓨터 내부의 환경을 뜻한다.

따라서 로컬 VCS는 말 그대로 내 컴퓨터 안에서 버전 관리를 하는 시스템이다.

이를 통해 버전 관리와 백업/복구가 가능하지만, 별도의 연결 없이 로컬 환경으로 한정되어 있기 때문에
협업과는 거리가 먼 시스템이다.

2. 중앙 집중식 VCS


출처: https://heekangpark.github.io/

중앙에 하나의 중심이 되는 컴퓨터(이하, 서버 )를 두는 구조

백업을 위한 내 프로젝트의 버전을 내 컴퓨터가 아닌 다른 서버에 저장하는 형태이다.

그 중 나의 로컬 환경에 수정이 "필요한 파일만 선별적으로 가져와서 작업"하는 방식이다.

중앙 서버에 버전을 저장했기 때문에 다른 클라이언트도 이 서버에 접근이 가능하다면, 이 프로젝트 파일을 내려받을 수 있다.

이를 통해 버전 관리, 백업/복구, 협업이 가능하다.

Delta

중앙 집중형 VCS는 각 버전의 개별 파일 내용의 변경점인 Delta 점을 저장한다.
로그 등을 통해 파일의 변경 이력을 저장하여 클라이언트가 원하는 버전 상태의 파일을 가져온다.

장점

  • 모든 클라이언트가 동일하고 유일한 저장소에서 파일을 내려받고, 올리기 때문에 관리가 편하고 동기화가 가능하다.

단점

  • 버전 관리에 대한 모든 동작이 서버에서 이루어지므로 서버 의존도가 크다.

    • 서버 부하가 크다.
    • 서버 고장 시 리스크가 크다.
    • 오프라인 환경에서는 버전 관리 시스템을 사용할 수 없다.
  • 파일 단위로 작업하기 때문에 해당 파일을 새 버젼에 적용했을 때 충돌 위험이 크다.

3. 분산 VCS


출처: https://heekangpark.github.io/

위 중앙 집중형 VCS의 문제를 보완하기 위해 탄생한 개념이 분산 VCS이다.

분산 VCS는 기본적으로 중앙집중식 VCS와 동일하게 프로젝트 파일을 서버에 저장한다.

차이점은, 파일이 아닌 "프로젝트를 통째로 내려받아 작업"하고, 저장 시에도 통째로 저장한다.

Snapshot

Snapshot은 우리가 흔히 아는 캡쳐와 비슷한 단어이다.
-> 현 상태를 그대로 찍어낸 것.

분산 VCS 부터는 파일이 아닌 프로젝트 전체의 변경 내용을 Snapshot이라는 개념으로 저장한다.

대표적인 분산 VCS인 Git은 최종 스냅샷을 저장하고, 스냅샷과 스냅샷 사이의 차이를 기록한 Delta를 저장하기 때문에 중앙 VCS보다 저장해야 하는 델타량이 적다.
또한 저장 효율을 위해 변경사항이 없는 파일들은 새로 저장하는 것이 아니라 링크를 걸어주는 등 다양한 최적화를 이용한다.
-> 가볍고 빠르다

(로컬과 서버가 동기화된 상태라는 가정하에)
분산 VCS는 서버에 저장된 Snapshot과 델타가 로컬 저장소에도 동일하게 분산되어 저장된 상태이기 때문에 오프라인 상태에서도 버전 관리를 할 수 있게 된다.

지금의 우리는 분산 VCS 개념의 Git X Github를 이용하여 매우 편리하게 협업하며 버전 관리를 할 수 있다.


🐈‍ Git 설치하기

https://git-scm.com/

위 링크에 접속하여 최신 버전을 설치할 수 있다.

다양한 옵션은 유저의 입맛에 맞게 설정하면 된다.

각 OS의 터미널에서,
git --version 을 입력하여 버전이 표시된다면 설치 완료를 확인할 수 있다.
필자는 CMD를 사용해 보았다.

🍻 Git과 친해지기

1. CLI vs GUI

Git에 대해 이해하기 앞서 CLI와 GUI의 개념에 대해 살펴 볼 필요가 있다.

  • CLI - Command Line Interface
    -> Shell에 글자(명령어)를 입력해 컴퓨터에게 명령을 내리는 방식의 인터페이스
    cf. Shell -> 조개 껍질(명령 프롬포트)을 열어 내용물(운영체제)에 접근한다~

  • GUI - Graphic User Interface
    -> 그래픽으로 컴퓨터에게 명령을 내릴 수 있도록 사용자 친화적인 화면을 제공하는 인터페이스

개발자가 아닌 일반 사용자를 위해, 또는 전반적인 편의성을 위해 사용이 편한 버튼 등으로 복잡한 명령을 대신 내려주는 형태

우리는 Git을 통해 칙칙한 CLI 환경에 입문해 볼 것이다.

2. 자주 쓰이는 기본 명령어

  1. ls - list segmentation - 현재 디렉토리에 어떤 파일이 있는지 나열함
  2. ls -a - 숨긴파일을 포함한 경로 안의 모든 파일과 디렉토리 나열
    -> 매개변수 옵션
    -> 윈도우 PowerShell에서 동작하지 않는다!
  3. mkdir [폴더명] - make directory - 폴더 만들기
  4. cd [경로] - change directory - 터미널 실행 경로를 변경한다.
    -> .은 상대적으로 현재경로, ..은 상위경로를 뜻한다.
  5. git init - git initialize - 현재 디렉토리를 git 저장소로 초기화함
    -> git init을 통해 현재 프로젝트 폴더 내에 .git이라는 폴더를 생성하여 프로젝트 폴더를 git 저장소로 관리함.
  6. git status git 저장소의 현재 상태를 확인
profile
개발자라는 틀에 얽매이지 않는 성장

2개의 댓글

comment-user-thumbnail
2023년 11월 15일

깔끔하게 잘 정리하셨네요!! 많이 배우고 갑니다👍

1개의 답글