Git 이란?

이상기·2023년 3월 20일
0

git

목록 보기
1/9
post-thumbnail

VCS

여기에 속하는건 크게 CVS, SVN, GIT 이 존재함. 이 중 git에 포커스를 맞춰볼 겁니다. 다음은 VCS가 주는 3가지 효과입니다.

Backup  : 백업을 통해 자료의 상태보존
Recovery : 이전의 상태로 자료를 돌릴 수 있게함.
Collaboration : 다른 사람들과 자료를 돌릴 수 있음.

VCS의 예시로는 각 연도별 매출이 있습니다. 이러한 특징을 갖은 git은 위에 vcs의 효과 3가지를 해낼 수 있습니다.

Git 이란?

형상 관리 도구로 프로젝트를 진행하면서 소스 코드를 USB나 메일로 주고받는 건 엄청난 낭비임과 동시 보안성 위험이 있음. 이를 방지하기 위해서 Git이 사용된다. 이것을 사용한다면 소스코드를 특정 과거 시점으로 되돌리거나, 특정 시점의 변경 사항을 취소하거나, 두 버전의 소스 코드를 비교하는 등의 일이 가능합니다.

Git의 장단점

Git의 장점

  • 소스코드 주고 받을 필요 없이, 같은 파일을 여러 명이 동시에 작업하는 병렬 개발 가능

  • 각자의 브랜치를 통한 개발 후, 본 프로그램에서 합치는 Merge가 가능.

  • 분산버전 관리이기 때문에 인터넷 연결 필수 X.

  • 중앙 저장소가 날라가도 복구 가능

  • 어떤 프로젝트든 체계적 개발이 가능, 프로그램이나 패치를 배포하는 과정역시 간단. (pull을 통한 업데이트, patch를 통한 파일 배포)

Git의 단점

  • 직관적이지 못함.
  • 공유 과정이 비교적 복잡함.(물론 guo를 지원하는 github desktop 사용시 극복가능)
  • Git이 복잡함.

공식 사이트에 나온 Git의 특징

Distributed development (분산 개발)

  • 전체 개발 이력을 각 개발자의 로컬로 복사본을 제공하고 변경된 이력을 다시 하나의 저장소로 복사한다.
  • 이러한 변경은 추가개발지점을 가져와, 로컬 개발 지점과 동일하게 병합(merge)할 수 있다. 저장소는 Git protocol 및 HTTP로 쉽고 효율적으로 접근가능 (특별한 웹서버 구성없이 가능)

Strong support for non-linear development(비선형 개발에 대한 강력한 지원)

  • 신속하고 편리항 branch 및 merge 지원, 비선형(여러갈래) 개발 이력을 시각화하고 탐색 할 수 있는 강력한 도구를 제공한다.

Efficient handling of large projects (대규모 프로젝트의 효율적 처리)

  • Git은 매우 빠르고, 대형프로젝트나 이력이 많은 작업에 매우 합리적이다. Git은 대부분의 다른 버전관리시스템보다 빠르게 요청한다. 그리고 일부 작업에서는 더 빠르게 진행한다.

  • 또한, 최근의 정상급 오픈소스 버전관리 시스템보다 장기간의 수정내역을 매우 효율적인 압축방법을 사용한다.

Cryptographic authentication of history (기록 암호화 인증)

  • GIt의 이력은 성공한 개발이력의 commit에 의해 개정명으로 저장된다. 일단 그것이 배포되면, 그것을 모르고 예전버전으로 변경하는것은 불가능하다. 또한, 그것들을 암호화 할수 있다.

Toolkit design (툴킷 설계)

  • UNIX의 전통에 따라, GIT은 C로 작성된 많은 소규모 도구모음이다, 그리고 많은 스크립트들이 기능 보강을 제공한다. Git은 새로운 기발한 작업을 위한 손쉬운 사용과 쉬운 스크립팅을 위한 도구를 제공한다.

Git 관련 기촌 용어

git init : 버전 관리 하고싶은 폴더에서 초기화를 하는 준비

git branch :

  • 독립적인 공간을 만든다.

  • 새로 만든 branch lab 1은 master와 완전히 동일한 상태를 가진 공간

  • 브랜치에서 수정 한 후 커밋하면 lab 1 에만 기록되며 master 브랜치에는 어떤 영향도 주지 않는다.

  • 원하는 만큼 빠르게 branch를 만들 수 있다.

  • 실험 중 다른 브랜치로 돌가야할 때: checkout master로 head를 옮겨야한다.
    이 때, cf> 작업중인 위치를 가르키는 가상의 커서가 존재하는 이를 git에서는 head라 한다.

  • 실험 성공 : lab1 브랜치의 내용을 마스터 브랜치와 병함 한다.

  • 실험 실패 : lab1 브랜치를 삭제한다.

checkout

  • 독립된 작업 공간인 브랜치를 자유롭게 이동할 수 있다.

git commit - 의미있는 수정 작업이 끝났을 떄 마침을 알려주는 작업.
pull - 리모트 저장소의 변경된 내용을 로컬(내 PC) 저장소에 적용하는 작업.
master - git init을 했을 때, default로 만들어지는 branch가 'master'이다.
profile
DBA가 되고싶은 사람입니다

0개의 댓글