[F-Lab 모각코 챌린지 45일차] Git 기초

Nami·2023년 7월 15일
0

66일 포스팅 챌린지

목록 보기
45/66
post-thumbnail

Git

정의

소규모에서 대규모 프로젝트에 이르기까지 모든 것을 빠르고 효율적으로 처리하도록 설계된 무료 오픈 소스 분산 VCS이다.

  • 버전 관리 시스템 중 하나로, 코드와 파일의 변경 이력을 관리하는 도구.
  • 프로그래밍 프로젝트에서 개발자들이 협업하거나 개인적으로 작업할 때 코드의 변경사항을 추적하고 관리하는 데에 사용된다.

VCS Version Control System

  • 파일의 변화를 추적하고 관리하는 시스템.
  • 소프트웨어 엔지니어링에서 VCS는 소스 코드와 파일 변경 이력을 추적하고 관리하는 데에 사용되는 도구이다.

목적

  1. 버전 관리
    파일과 코드의 변경 이력을 기록하여 이전 버전과의 차이점을 추적한다. 개발자는 언제든지 이전 상태로 돌아갈 수 있고, 문제가 발생한 경우 변경 사항을 식별하고 수정할 수 있음.

  2. 협업
    VCS는 여러 개발자가 동시에 작업하고 변경사항을 통합할 수 있게 지원한다. 각 개발자는 독립적인 작업 브랜치를 생성하고, 변경 사항을 추적하고 다른 개발자와 공유할 수 있음.

  3. 백업과 복원
    VCS는 파일과 코드의 이력을 저장하므로, 데이터의 손실이나 시스템 장애로부터의 복구가 가능

Delta-based version control

  • 파일의 변경 사항을 기록할 때 각 변경 사항을 이전 상태와의 차이로 저장하는 방식
  • 이전 상태와의 차이를 나타내는 delta(증분)를 사용하여 변경된 부분만 저장함으로써 저장 공간을 절약
  • 저장 공간의 낭비와 속도 저하가 발생
  • Subversion(SVN)이 사용하는 방식

Stream of snapshots

  • 파일의 변경 이력을 스냅샷(상태의 사본)으로 저장하는 방식
  • 각각의 스냅샷은 파일 시스템의 현재 상태를 나타내는 완전한 사본
  • 변경 사항 추적과 롤백, 브랜치 및 병합 등의 작업이 간단하고 빠르게 수행될 수 있도록 함.
  • Git이 사용하는 방식

CVCS Centralized Version Control System

  • 중앙 집중식 버전 관리 시스템.
  • 중앙 서버에서 파일의 변경 이력을 관리하며, 개발자는 중앙 서버와 통신하여 작업
  • Subversion(SVN)

DVCS Distributed Version Control System

  • 분산 버전 관리 시스템
  • 각 개발자가 로컬 저장소를 가지고 있으며, 파일의 체크아웃(Checkout), 커밋(Commit), 브랜치(Branch), 병합(Merge) 등의 작업을 로컬에서 수행.
  • 개발자들이 작업하는 동안 변경 사항은 로컬 저장소에 기록되고 추적

Github

Git 기반의 웹 기반 호스팅 서비스로, 개발자들이 Git을 사용하여 소스 코드를 관리하고 협업하는 데에 도움을 주는 플랫폼.

History of Git

Git의 개발 비화를 다룬 만화

리누스 토르발스 Linus Torvalds가 2005년에 개발을 시작했고 기존 버전 관리 시스템인 Bitkeeper에 만족하지 못하고 자체적인 버전 관리 시스템을 만들기로 결정했다.
프로젝트 초기 목표는 Linux 커널의 개발에 사용할 수 있는 간단하고 빠른 분산 버전 시스템을 만드는 것.
Git은 Linux 커널 개발에서 사용되어야 했기 때문에 매우 큰 규모와 다양한 개발자들의 협업을 처리할 수 있는 성능과 안정성이 요구되었다. 2005년 7월에는 최초의 공개 버전인 Git 1.0이 출시되고 이후 커뮤니티의 기여와 개발자들의 참여를 통해 지속적으로 발전, 확장되었다.

Why?

  • most commonly used
  • free
  • open source
  • lightning fast
  • work offline
  • undo mistakes
  • easy and fast branching/merging

사용자 설정 및 세팅

(실습 내용만 기록하겠다.)
git config --list : 모든 설정 확인 가능

git config --global -e : 터미널에서 설정 edit 모드 가능
git config --global core.editor "code --wait" : 에디터 실행시 터미널 wait하게끔 설정
git config --global user.name "Nami" : 사용자 이름 설정
git config --global user.email "havenothorn@gmail.com" : 사용자 이메일 설정


참조 ✅

0개의 댓글