많은 개발자들이 사용하는 협업 툴인 Git이 무엇인지 정리해볼게요


우선 Git이 무엇인지 알아야겠죠?

📢Git이란 무엇인가?

Git은 분산 버전 관리 시스템(DVCS) 입니다.

단어가 많이 조합되어 있네요

파일의 변경 이력을 저장하고, 특정 시점으로 되돌릴 수 있게 해주는 시스템 → 버전 관리 시스템

중앙 서버에만 이력이 있는 것이 아닌, 각자의 로컬 저장소에도 전체 이력이 존재 → 분산

즉,

Git은 "코드의 시간 여행을 가능하게 해주는 도구"

입니다.


Git의 핵심 개념

4가지의 Git 핵심 개념에 대하여 알아보겠습니다.

Repository (저장소)

.git 폴더가 존재하는 모든 공간으로 모든 변경 이력이 저장되는 곳입니다.

git init

Working Directory

현재 작업 중인 파일 공간입니다.

Staging Area

커밋 전 올려두는 임시 공간입니다.

git add .

Commit

하나의 저장 단위 입니다

git commit -m "message"

Git 기본 흐름

코딩을 하게 되면 대체로

작업 -> add -> commit

의 흐름으로 진행이 됩니다.

그러니까, Working Directory에서 작업을 한 후, git add .을 통해 Staging Area에 올라와있고, git commit -m "message"로 커밋 메세지와 함께 저장을 해서 Repository에 올립니다.


Git을 사용하는 이유

Git에 대해 정리해보았는데, 그래서 Git을 사용하는 이유는 무엇일까요?

1️⃣ 변경 이력을 기록하기 위해
개발을 진행하다보면 코드는 계속 변경됩니다

  • 기능이 추가되고
  • 버그가 수정되고
  • 코드가 리페고링 되고

그런데 버전 관리가 없다면

  • 무엇이, 언제, 왜 바뀌었는지
    기억하기 힘들겠죠

수많은 파일들을 만들어서 기록해두는 것도 한계가 있을테니 말이에요

이 과정을 git을 통해 기록할 수 있습니다


2️⃣ 이전 상태로 되돌아가기 위해
개발 중, 코드가 망가져버리는 순간들이 있죠
이럴 때, 앞서 기록해두었던 커밋을 통하여 과거로 돌아갈 수 있습니다
그래서 Git을

코드의 시간 여행 도구

라고 표현하기도 한다네요


3️⃣ 협업을 위해
제가 생각하는 가장 큰 이유입니다.

결국 팀 단위의 프로젝트들을 진행할 때, 제대로 관리되지 않는다면 큰 사고가 날 수도 있겠죠?
우리 모두가 같은 생각을 하는 것도 아니니 말이에요

그러기에 이러한 협업에서 Git은 필수적이라고 생각합니다.

Git이 없다면,

  • 파일이 덮어써지거나
  • 변경 사항이 사라지거나
  • 누가 무엇을 했는지 알 수 없거나

누군가 흑심을 품고 망치기 위해 코드를 다 날려버리면 그걸로 끝이잖아요💀💣💀💣❌

그래서 Git을 사용하여

  • 각자 브렌치에서 작업하고
  • 변경 사항을 병합하고
  • 기록을 남기고

이렇게 규칙을 만들어서 서로 조율하면서 작업할 수 있게 해주는 도구(tool)입니다.


🌱 Git branch

위에 말하다보니 브렌치(branch)에 대한 이야기가 나왔죠?

브렌치는 직역으로 가지, 그러니 나무에서 뻗어나온 가지를 의미합니다.

Git에서의 의미로 해석해보자면 하나의 코드 흐름에서 새로운 작업 흐름으로 따로 뻗어 나가는 것이죠

🌿Branch 사용 이유

이 기능을 사용하는 이유를 알아보겠습니다

1️⃣ 안전하게 작업하기 위해
새로운 기능을 만들 때 발생할 수 있는 수많은 이슈들에 대처하기 위함이죠

그러니까, 지금까지 완성된 작업들은 기존 브랜치에 존재하고, 새로운 브랜치에서 새 기능 작업을 진행해서 안정적으로 작업이 되었을 때 기존 브랜치로 병합을 하면 이슈가 발생할 확률이 줄어드는 것입니다.

원본을 건드리지 않고 실험할 수 있다

2️⃣ 충돌을 관리하기 위해

여러 명이 동시에 작업을 하는 팀 단위의 프로젝트들에서는 충돌(conflict)을 피하는 것이 불가피합니다

이런 것들을 관리하기 위해 각자 branch를 생성하여 그곳에서 작업을 하면 작업 도중에서 충돌이 발생하는 일을 관리할 수 있겠죠

다음 페이지에서 Git branch 관리와 팀 단위의 사용법에 대해 알아보도록 하겠습니다

profile
다른 건 노력의 시간

0개의 댓글