Git

[Git] 깃 기본 용어 / 주요 명령어 정리

nyJae 2022. 9. 19. 02:05

 

 

 

1. 깃 기본 용어

 

  • Repository(저장소): 파일이나 폴더를 저장해두는 저장소. 저장소를 통해 작업자가 변경한 모든 히스토리를 확인할 수 있다.

* 저장소는 내 컴퓨터에 있는 Local Repository(로컬 저장소)와 서버 등 네트워크에 있는 Remote Repository(원격 저장소)로 구분된다.

 

  • Working Tree(작업 트리): 작업을 하는 폴더.
  • Index(=Staging Area): 커밋 실행 전의 저장소와 작업 트리 사이에 존재하는 공간. 작업 트리에서 내용 변경을 한 후 커밋을 하게 되면 변경 사항이 바로 저장소에 기록되는 것이 아니라, 그 사이 공간인 인덱스에 먼저 파일 상태가 기록된다.

 

  • Commit: 작업 내용을 변경한 후 로컬 저장소에 저장하는 작업 또는 해당 작업으로 생성되는 변경 이력. 커밋 이전의 상태부터 커밋 이후의 변경 내용까지 기록된다. 언제든지 커밋한 시점으로 되돌아 갈 수 있고, 저장을 원하는 파일을 묶어서 커밋 명령을 수행할 수 있다.
  • Push: 파일을 추가하거나 변경한 내용을 원격 저장소에 업로드하는 작업. 
  • Add: 커밋을 하기 전에 저장을 원하는 파일을 묶는 작업. 스테이지(인덱스)에 파일을 올린다라고도 표현한다. 스테이지에 파일을 올려야 커밋을 수행할 수 있다.
  • Clone인터넷에 있는 원격 저장소를 로컬에 복제하는 것. repository에 있는 파일을 내 컴퓨터(로컬)의 특정 디렉토리로 가져올 수 있다.   * 깃허브에서 수행 가능한 'fork'는 원격 저장소를 내 github 계정 원격 저장소에 복제.  
  • Pull: 내 컴퓨터(로컬 저장소)에 저장된 작업 내용보다 서버(원격 저장소)에 저장된 작업 내용이 더 앞서 있는(더 최신 내용을 저장하고 있음) 경우, 두 저장소의 내용이 같아지도록 원격 저장소의 커밋들을 가져오는 작업.

 

  • Branch: 하나의 프로그램을 독립적으로 작업하는 것 또는 독립적인 작업을 위한 공간. 소스코드의 현재 상태를 복사하여 각각의 브랜치에서 여러 작업을 동시에 진행할 수 있다.

* 통합 브랜치: 배포가능한 버전. 저장소 생성 시 자동으로 만들어지는 main 브랜치를 통합 브랜치로 이용한다.

   토픽 브랜치: 기능 추가, 버그 수정과  같은 단위 작업을 하기 위해 따로 생성하는 브랜치. 테스트 및 검증을 마친 후 통합브랜치로 병합된다.

 

  • Head: 현재 작업 중인 브랜치.
  • Merge: 다른 브랜치의 내용을 현재 브랜치로 가져와 하나의 브랜치로 병합하는 것. 
  • Checkout: 특정 커밋이나 브랜치로 이동하는 것.  

 


2. 깃 주요 명령어 

 

  • git init: 새로운 저장소 생성 및 초기화.
  • git status: 현재 작업 중인 브랜치 이름과 추가/변경된 파일 및 디렉토리 정보를 보여준다.
  • git log: 현재 커밋 목록들을 확인.

 

  • git clone: 원격 저장소의 기존 소스코드를 로컬 저장소로 다운로드 및 복제.
  • git add: 작업 내역을 인덱스 영역에 추가. (스테이징)
  • git commit: 커밋 생성.
  • git push: 로컬 저장소의 소스코드 변경 사항을 원격 저장소에 기록.
  • git fetch: 원격저장소의 변경 내역을 로컬 저장소로 가져오기만 하고 병합은 하지 않는다. (원격 저장소의 변경 내역을 다운로드하는 것이라고 생각할 수 있다. 로컬 저장소의 작업 내용은 업데이트 되지 않는다.)
  • git pull: 원격 저장소의 변경 내역을 로컬 저장소로 가져와서 병합. (fetch와 merge를 한번에 수행하는 것)
  • git reset: 로컬 저장소의 커밋을 취소. 

 

  • git branch 브랜치명: 브랜치 생성.
  • git branch: 모든 브랜치 조회.
  • git branch -d 브랜치명: 브랜치 삭제.
  • git merge 병합할브랜치명: 현재 HEAD가 가리키는 브랜치에 병합.
  • git checkout 브랜치명/커밋해시/상대참조: 특정 브랜치 또는 커밋으로 이동.

↳ 커밋 해시는 전체를 다 작성할 필요 없이, 해시가 커밋의 고유한 값임을 보여줄 수 있을 만큼만 명시해주면 된다. (git log 명령어로 해시 확인 가능)

   ex) 해시: fed2da64c0efc5293610bdd892f82a58e8cbc5d8 → 'fed2'만 입력

↳ [상대 참조 방법]

     ① 참조이름^ : 명시한 커밋의 부모를 의미. 캐럿 연산자(^)를 하나씩 추가할 때마다, 부모 커밋을 찾아간다.

     ② 참조이름~숫자: 틸드 연산자(~) 뒤에 돌아가고 싶은 부모의 갯수를 명시.

    ex) main^^^ , main~3  

* HEAD도 상대 참조를 위해 사용 가능(현재 작업 중인 위치에서 이동)

 

 

https://learngitbranching.js.org/?locale=ko 

 

Learn Git Branching

An interactive Git visualization tool to educate and challenge!

learngitbranching.js.org

이 사이트에서 몇 가지 깃 명령어들의 개념을 그림으로 이해하고 실습해볼 수 있습니다.

 


3. 그 외의 깃 명령어 (업데이트 예정)

 

  • git merge --abort : 병합을 취소.
  • git branch -f A(브랜치명) B(재지정위치) : 브랜치 A를 B 위치의 커밋으로 강제 재지정.