본문으로 건너뛰기

Git과 기본 작업 흐름

중요도: 필수 · 원본 협업 가이드에서 이 주제에 필요한 내용을 모았습니다.

1. Git과 GitHub​

Git​

Git은 파일의 변경 이력을 기록하고 여러 사람이 같은 프로젝트를 안전하게 개발할 수 있도록 도와주는 **분산 버전 관리 시스템(DVCS)**이다.

쉽게 말하면,

"누가, 언제, 무엇을 바꿨는가?"

를 기록하면서 서로의 작업을 합칠 수 있게 해주는 도구다.

Git은 내 컴퓨터에서도 동작한다. 인터넷이 끊겨도 Commit을 만들고 History를 확인할 수 있다.


GitHub​

GitHub는 Git Repository를 온라인에서 관리하면서 협업 기능을 제공하는 플랫폼이다.

대표적으로 다음 기능을 제공한다.

  • Repository
  • Issue
  • Pull Request
  • Code Review
  • Projects
  • Actions
  • Release
  • Ruleset

즉,

Git = 버전 관리 시스템
GitHub = Git을 기반으로 협업하기 위한 플랫폼

이라고 이해하면 된다.

[!TIP] Git과 GitHub는 같은 것이 아니다. GitHub 없이 Git만 사용할 수도 있고, GitHub는 Git 위에 여러 협업 기능을 더해주는 서비스에 가깝다.


2. Git이 파일을 관리하는 흐름​

Git을 처음 배울 때 가장 중요한 부분이다.

Working Directory
↓ git add
Staging Area
↓ git commit
Local Repository
↓ git push
Remote Repository

Working Directory​

현재 내가 직접 수정하고 있는 프로젝트 파일이다.

예를 들어 Unity에서 PlayerController.cs를 수정했다면 아직은 Working Directory에 변경 사항이 존재하는 상태다.


Staging Area​

다음 Commit에 포함할 변경 사항을 고르는 공간이다.

git add PlayerController.cs

모든 수정 파일을 무조건 한 Commit에 넣을 필요는 없다.


Commit​

선택한 변경 사항을 하나의 의미 있는 이력 단위로 저장한다.

git commit -m "feat: add player dash"

Commit은 단순 저장 버튼이 아니다.

"이 시점에 이런 변경을 했다"

라는 프로젝트 History를 만드는 작업이다.


Local Repository​

내 컴퓨터에 존재하는 Git Repository다.

Commit을 했다고 바로 GitHub에 올라가는 것은 아니다.


Remote Repository​

GitHub 등에 존재하는 공유 Repository다.

보통 우리 팀에서는 GitHub Repository가 Remote Repository가 된다.


3. Repository / Clone / Remote​

Repository​

Git이 변경 이력을 추적하는 프로젝트 저장소.

보통 줄여서 Repo라고도 한다.


Clone​

Remote Repository를 처음 내 컴퓨터로 복제하는 작업.

git clone <repository-url>

Clone을 하면 코드뿐 아니라 Git History도 함께 가져온다.


Remote​

Local Repository와 연결된 외부 Repository.

기본적으로 Clone했을 때 GitHub Repository에는 보통 다음 이름이 붙는다.

origin

origin은 특별한 예약어가 아니라 관습적으로 사용하는 Remote 이름이다.


4. Push / Fetch / Pull​

초반에 가장 많이 헷갈리는 세 가지다.

Push​

내 Local Commit을 Remote Repository로 올린다.

Local → Remote
git push

Fetch​

Remote Repository에 어떤 변화가 생겼는지 정보를 가져온다.

하지만 현재 작업 Branch에 바로 합치지는 않는다.

git fetch

Pull​

Remote의 변경 사항을 가져와 현재 Branch에 반영한다.

개념적으로 보면 보통 다음과 비슷하다.

fetch
+
merge 또는 rebase
git pull

[!NOTE] 팀원이 GitHub에 Push했다고 해서 내 프로젝트가 자동으로 바뀌는 것은 아니다. Local Repository와 Remote Repository는 서로 다른 저장소다.