Git & GitHub 핵심 용어 정리

Etc

0 views

1. 핵심 개체

1.1 Repository

  • 정의
    • 파일과 폴더, 그리고 그 변경 이력(History)이 모두 저장된 프로젝트 공간이다.
  • 종류:
    • Local Repo: 내 컴퓨터에 저장된 저장소 (.git 폴더).
    • Remote Repo: GitHub 등 서버에 저장된 저장소.

1.2 Commit

  • 정의
    • 작업 내역이 영구적으로 저장된 특정 시점의 스냅샷이다.
    • 40자리의 SHA-1 해시값으로 식별된다.
  • 기술적 특징:
    • 커밋은 변경된 내용(Delta)이 아니라, 당시 파일 상태 전체(Snapshot)를 저장한다.

1.3 Branch

  • 정의
    • 독립적인 작업을 진행하기 위해 원본 코드에서 갈라져 나온 작업 흐름이다.
  • 기술적 특징
    • 실제로는 파일 복사본이 아니라, 특정 커밋을 가리키는 포인터(참조)에 불과하여 매우 가볍다.

1.4 HEAD

  • 정의
    • 현재 작업 중인 브랜치나 커밋을 가리키는 특수 포인터다.
  • 상세
    • 보통은 현재 브랜치(refs/heads/main)를 가리키지만, 특정 커밋으로 직접 이동하면 Detached HEAD 상태가 된다.

2. 주요 동작

  • 데이터를 이동시키거나 상태를 변경하는 행위다.

2.1 Clone

  • 설명:
    • 원격 저장소의 모든 내용(코드 + 이력)을 내 컴퓨터로 내려받는 행위다.
  • 차이점:
    • 단순히 파일만 다운로드(Download ZIP)하는 것과 달리, .git 폴더(이력)까지 통째로 가져온다.

2.2 Staging

  • 설명
    • 작업한 파일 중 커밋에 포함시킬 파일을 선별하여 Staging Area(대기실)에 올리는 행위다. (git add)

2.3 Push

  • 설명
    • 로컬 저장소의 커밋 내역을 원격 저장소로 업로드한다.

2.4. Pull vs Fetch

  • Fetch:
    • 원격 저장소의 최신 정보를 가져오기만 하고, 내 작업물과 합치지는 않는다. (확인용)
  • Pull:
    • 원격 저장소의 내용을 가져와서(Fetch), 내 작업물과 자동으로 합친다(Merge).
  • 공식: git pull = git fetch + git merge

2.5. Checkout / Switch

  • 설명:
    • 다른 브랜치나 커밋으로 작업 환경을 변경하는 행위다.
  • 주의:
    • Git 2.23 버전부터는 역할이 분리되어, 브랜치 이동은 git switch, 파일 복구는 git restore를 권장한다.

3. GitHub 및 협업 용어 (Social & Collaboration)

  • Git 자체 기능이 아니라 GitHub 같은 호스팅 서비스에서 제공하는 기능이다.

3.1 Remote

  • 정의
    • 인터넷(GitHub 서버)에 있는 저장소를 지칭한다.
  • Origin (오리진)
    • 원격 저장소의 주소를 매번 치기 귀찮아서 붙인 기본 별명(Alias)이다.
    • git remote add origin [URL] 명령어로 설정한다.

3.2 Fork (포크)

  • 정의:
    • 타인의 저장소를 내 계정의 저장소로 통째로 복사해 오는 기능이다.
  • 용도:
    • 원작자에게 수정 권한이 없을 때, 내 계정으로 가져와서 수정한 뒤 PR을 보내기 위해 사용한다.

3.3 Pull Request (PR / 풀 리퀘스트)

  • 정의
    • "내가 수정한 코드를 당신의 원본 저장소에 당겨 가달라고 요청"하는 것이다.
  • 의의
    • 코드 병합 전 코드 리뷰(Code Review)가 이루어지는 핵심 공간이다.

3.4 Issue (이슈)

  • 정의
    • 버그 신고, 기능 제안, 할 일 등을 논의하는 게시판이다.

4. 심화 및 문제 해결 용어 (Advanced)

4.1 Conflict (충돌)

  • 상황
    • 두 명의 개발자가 같은 파일의 같은 라인을 서로 다르게 수정하고 병합하려 할 때 발생한다.
  • 해결
    • Git은 기계적으로 판단할 수 없으므로, 개발자가 직접 어떤 코드를 사용할지 선택해야 한다.

4.2 Upstream (업스트림)

  • 정의:
    • Fork를 떴을 때, 원본 저장소를 지칭하는 용어다.
  • 관계:
    • Origin: 내가 Fork 해온 내 계정의 저장소.
    • Upstream: Fork의 대상이 된 원작자의 저장소.

4.3 Merge (병합)

  • Fast-Forward Merge:
    • 브랜치가 갈라지지 않고 단순히 앞으로 이동만 하는 병합.
  • 3-Way Merge:
    • 갈라진 브랜치를 합치며 새로운 커밋(Merge Commit)을 생성하는 병합.

Loading comments...