git basic

Dino_·2021년 7월 11일
0

Require for Dev

목록 보기
1/4
post-thumbnail

🏅 Goal


  • git이 무엇인가에 대해 이해한다.
  • git을 왜 사용하는가에 대해 이해한다.
  • Convention이 아닌 git 자체에 대해 초점을 둔다.

🏃🏻 git의 역사


Linux 커널은 굉장히 규모가 큰 오픈소스 프로젝트다. Linux 커널의 삶 대부분은(1991–2002) Patch와 단순 압축 파일로만 관리했다. 2002년에 드디어 Linux 커널은 BitKeeper라고 불리는 상용 DVCS를 사용하기 시작했다.

2005년에 커뮤니티가 만드는 Linux 커널과 이익을 추구하는 회사가 개발한 BitKeeper의 관계는 틀어졌다. BitKeeper의 무료 사용이 재고된 것이다. 이 사건은 Linux 개발 커뮤니티(특히 Linux 창시자 Linus Torvalds)가 자체 도구를 만드는 계기가 됐다. Git은 BitKeeper를 사용하면서 배운 교훈을 기초로 아래와 같은 목표를 세웠다.

  • 빠른 속도
  • 단순한 구조
  • 비선형적인 개발(수천 개의 동시 다발적인 브랜치)
  • 완벽한 분산
  • Linux 커널 같은 대형 프로젝트에도 유용할 것(속도나 데이터 크기 면에서)

Git은 2005년 탄생하고 나서 아직도 초기 목표를 그대로 유지하고 있다. 그러면서도 사용하기 쉽게 진화하고 성숙했다. Git은 미친 듯이 빨라서 대형 프로젝트에 사용하기도 좋다. Git은 동시다발적인 브랜치에도 끄떡없는 슈퍼 울트라 브랜칭 시스템이다.

🌲 git이 뭐냐?


Git is a free and open source distributed version control system designed to handle everything from small to very large projects with speed and efficiency.

Git은 작은 프로젝트부터 매우 큰 프로젝트들까지 빠르고 효율적으로 다룰 수 있게 디자인된 무료 오픈소스 분산 버전 관리 시스템이다.

🌱 VCS가 뭐냐?

버전 관리 시스템(Version Control System)은 파일 변화를 시간에 따라 기록했다가 나중에 특정 시점의 버전을 다시 꺼내올 수 있는 시스템이다.

🌱 VCS는 왜 사용하는데?

VCS를 사용하면 각 파일을 이전 상태로 되돌릴 수 있고, 프로젝트를 통째로 이전 상태로 되돌릴 수 있고, 시간에 따라 수정 내용을 비교해 볼 수 있고, 누가 문제를 일으켰는지도 추적할 수 있고, 누가 언제 만들어낸 이슈인지도 알 수 있다. VCS를 사용하면 파일을 잃어버리거나 잘못 고쳤을 때도 쉽게 복구할 수 있다.

물론 사용해야하는 이유는 너무나 분명하다.

대학 시절 너무나 공감되는 파일 정리법이다. 위의 이미지에서 문제점이 무엇일까?

  • (최종중의 최종)에서 다시 필요할 일이 생겨 이전의 파일에서 삭제했던 내용이나 순서가 변경됐던 기록을 찾아서 다시 복원할 수 있을까?
  • (최종중의 최종) 외에 앞으로 더 변경사항이 없을까? 교수님에게 빠꾸를 먹어 다시 고쳐야할 수 있지 않을까? 그렇다면 파일의 개수는 계속해서 번식할 것이다.
  • 팀 프로젝트라면 누구 파일이 통합 파일로 할 것인가? 역할이 있었다면 기존의 자신의 파일 내용을 통팝 파일에 붙여넣어야 하지 않을까?

교수님에게 빠꾸먹는건 아쉽게 된 일이겠지만 그외 나머지 문제들은 vcs를 사용해서 해서 해결할 수 있다!

👨 그래. 그래서 git은 왜 사용하는데?


앞서서 VCS에 대해서 설명했다. 그래 그렇다면 다른 VCS(CVS, SVN)가 아닌 왜 하필 git을 사용할까?

☝🏼 분산형 버전 관리

이 설명이 시작되기 전에 VCS의 유형를 읽어보는 것도 좋다.

분산형 버전 관리 시스템은 중앙집중식 버전 관리 시스템과는 달리 클라이언트가 단순히 파일의 마지막 스냅샷을 Checkout 하지 않고 저장소를 히스토리와 더불어 전부 복제한다. 그렇기 때문에 서버에 문제가 생기면 이 복제물(클라이언트의 복제물)로 다시 작업을 시작할 수 있다. 클라이언트 중에서 아무거나 골라도 서버를 복원할 수 있다.

✌🏼 변경 상태를 스냅샷으로 관리

다른 VCS와는 가장 두드러진 차이점이기 때문에 중요한 포인트이다. 따로 주제를 만들어 포스팅해야겠다.

VCS 시스템 대부분은 관리하는 정보가 파일들의 목록이다. CVS, SVN, Perforce, Bazaar 등의 시스템은 각 파일의 변화를 시간순으로 관리하면서 파일들의 집합을 관리한다.(보통 델타 기반 버전관리 시스템이라 함)

댜신 Git은 데이터를 파일 시스템 스냅샷의 연속으로 취급하고 크기가 아주 작다. Git은 커밋하거나 프로젝트의 상태를 저장할 때마다 파일이 존재하는 그 순간을 중요하게 여긴다. 파일이 달라지지 않았으면 Git은 성능을 위해서 파일을 새로 저장하지 않는다. 단지 이전 상태의 파일에 대한 링크만 저장한다.

🤟🏼 그외에 단순한 이유들

  • 수많은 IT 기업들에서 사실상 표준으로 Git을 사용하고 있다. 기술적 보안이 중요한 대기업에선 엔터프라이즈 GitHub(또는 GitLab 등)도 사용하여서 코드를 관리하고 있다.

  • github이 망하지 않는 이상. 즉, 세계의 모든 개발자들에게만 걸리는 특수한 병이 퍼져 더이상 개발을 하지 못하는 상황이 오는 경우나 Microsoft가 망하는 경우가 아니라면 git은 망할 수 없다.

Reference


profile
호기심 많은 청년

0개의 댓글