본문 바로가기
카테고리 없음

Git 용어 총정리

by ByteGuard 2024. 10. 6.
용어 설명
Repository 프로젝트 파일과 폴더의 버전 관리를 위한 저장소. 로컬 또는 원격에 존재할 수 있음.
Commit 파일의 변경 사항을 저장하는 단위. 메시지와 함께 스냅샷 형태로 기록.
Branch 독립적으로 작업을 할 수 있는 가지. 여러 브랜치에서 병렬 작업이 가능.
Master/Main 기본 브랜치로, 보통 배포 가능한 안정된 버전의 코드가 저장됨.
Merge 두 브랜치의 변경 사항을 하나로 합치는 작업.
Rebase 한 브랜치의 변경 사항을 다른 브랜치의 변경 사항 앞에 재배치하는 작업.
Checkout 특정 브랜치나 커밋으로 이동하여 작업 디렉터리를 변경하는 명령어.
Pull 원격 저장소에서 로컬 저장소로 변경 사항을 가져오고 병합하는 작업.
Push 로컬 저장소에서 원격 저장소로 커밋을 전송하는 작업.
Clone 원격 저장소를 복사하여 로컬에 동일한 저장소를 생성하는 작업.
Fetch 원격 저장소에서 최신 변경 사항을 가져오지만 병합하지 않는 작업.
Stash 현재 작업 중인 변경 사항을 임시로 저장하여 작업 공간을 깨끗하게 만드는 기능.
Conflict 두 브랜치의 병합 중 충돌이 발생하는 경우, Git이 자동으로 해결할 수 없는 상태.
HEAD 현재 체크아웃된 브랜치나 커밋을 가리키는 포인터.
Remote 원격 저장소를 가리키는 이름. 보통 'origin'이 기본적으로 설정됨.
Tag 특정 커밋을 참조하는 마커. 주로 릴리즈 버전 등을 표기할 때 사용.
Blame 파일의 각 줄이 누구에 의해, 언제 변경되었는지 추적하는 명령어.
Diff 두 버전 간의 차이점을 보여주는 명령어.
Log 저장소의 커밋 기록을 보여주는 명령어.
Fork 원본 저장소를 복제하여 독립적인 개발을 할 수 있도록 만든 개인 저장소.
Submodule Git 저장소 안에 포함된 또 다른 Git 저장소.
Cherry-pick 특정 커밋의 변경 사항만 선택적으로 현재 브랜치에 적용하는 작업.
Squash 여러 커밋을 하나의 커밋으로 합치는 작업.
Revert 이전 커밋의 변경 사항을 무효화하고 되돌리는 작업.

 

 

1. 로컬 저장소 (Local Repository)

  • 설명: 로컬 저장소는 개발자가 자신의 컴퓨터(로컬 머신)에서 사용하는 Git 저장소입니다. 이 저장소는 컴퓨터에 직접 저장된 파일들과 버전 관리 데이터로 이루어져 있습니다.
  • 특징:
    • 모든 Git 명령어(예: commit, checkout, branch 등)는 로컬 저장소에서 실행됩니다.
    • 인터넷 연결 없이도 작업할 수 있습니다.
    • 파일의 변경 사항을 저장하고, 여러 가지 실험적인 브랜치를 만들 수 있는 독립적인 작업 공간입니다.
    • 로컬 저장소에서 작업한 후, 이를 원격 저장소에 푸시할 수 있습니다.

2. 원격 저장소 (Remote Repository)

  • 설명: 원격 저장소는 GitHub, GitLab, Bitbucket과 같은 서버에 호스팅된 저장소입니다. 여러 개발자가 협업하는 프로젝트에서는 보통 원격 저장소를 중심으로 작업이 이루어집니다.
  • 특징:
    • 중앙 저장소 역할을 합니다. 여러 개발자가 각자의 로컬 저장소에서 작업한 내용을 이 원격 저장소에 푸시하여 공유합니다.
    • 로컬 저장소와는 달리, 원격 저장소는 보통 서버에 있으며, 인터넷을 통해 접근해야 합니다.
    • 일반적으로 'origin'이라는 기본 이름으로 연결됩니다.
    • 원격 저장소로부터 최신 업데이트를 가져올 때는 pull 또는 fetch 명령어를 사용하며, 작업 내용을 서버에 반영할 때는 push 명령어를 사용합니다.

로컬과 원격 저장소 간 작업 흐름

  1. Clone: 원격 저장소를 로컬로 복사하여 작업을 시작.
  2. Commit: 로컬 저장소에서 파일 변경 사항을 커밋하여 기록.
  3. Push: 로컬에서 작업한 변경 사항을 원격 저장소에 반영.
  4. Pull/Fetch: 원격 저장소의 최신 변경 사항을 로컬로 가져옴.

간단히 말해, 로컬 저장소는 내 컴퓨터에서 관리하는 공간이고, 원격 저장소는 여러 개발자와 공유하기 위해 서버에 저장된 저장소라고 할 수 있습니다.

 

 

1. Clone

  • 새로운 프로젝트를 시작하거나 기존의 프로젝트를 가져올 때 사용합니다.
  • 원격 저장소(예: GitHub, GitLab 등)에 있는 프로젝트를 로컬 컴퓨터로 복사합니다.
  • 명령어: git clone <repository-url>
  • 주로 가장 처음에 사용됩니다.

2. Fetch

  • 원격 저장소에 있는 업데이트된 내용을 로컬 저장소로 가져오지만, 로컬 브랜치에는 적용하지 않습니다.
  • 원격 저장소에 어떤 변경 사항이 있는지 확인하고 싶은 경우에 유용합니다.
  • 명령어: git fetch
  • 로컬에서 작업을 시작하기 전에 종종 사용됩니다.

3. Pull

  • 원격 저장소의 최신 변경 사항을 로컬 저장소로 가져오고, 자동으로 로컬 브랜치에 병합합니다.
  • 협업하는 과정에서 다른 개발자가 변경한 내용을 반영해야 할 때 사용합니다.
  • 명령어: git pull
  • 보통 작업을 시작하기 전에 원격의 변경 사항을 반영하기 위해 사용합니다.

4. Commit

  • 로컬에서 작업한 변경 사항을 로컬 저장소에 기록합니다.
  • 수정된 파일을 스테이징(staging)하고 커밋하여 프로젝트의 히스토리를 관리할 수 있습니다.
  • 명령어:
     
    git add <file> # 변경 파일을 스테이징
    git commit -m "커밋 메시지"
  • 변경 사항이 있을 때마다, 작업의 특정 단계를 마칠 때마다 사용됩니다.

5. Push

  • 로컬 저장소의 커밋된 변경 사항을 원격 저장소에 업로드합니다.
  • 팀원들과 변경 사항을 공유하기 위해 사용하며, 보통 pull로 원격의 최신 상태를 반영한 후 사용합니다.
  • 명령어: git push
  • 작업을 마무리하고 변경 사항을 공유할 준비가 되었을 때 사용합니다.

정리

위의 순서를 다시 나열하면, 일반적인 흐름은 다음과 같습니다:

  1. clone (처음 프로젝트를 가져올 때)
  2. fetch 또는 pull (작업 시작 전 원격 저장소의 변경 사항을 반영)
  3. 코드 작성 및 변경
  4. commit (변경 사항을 로컬에 저장)
  5. push (로컬 변경 사항을 원격 저장소로 업로드)

추가 참고 사항

  • fetch와 pull은 종종 교환하여 사용될 수 있습니다.
  • 이미 로컬에 저장소가 있다면, clone은 생략됩니다.
  • 상황에 따라 위 순서는 변경될 수 있으며, 작업하는 브랜치나 협업 방식에 따라 다소 유동적일 수 있습니다.