Git/Github 기본 개념 정리 (명령어 / Remote 저장소)

Ji·2021년 12월 6일

Git

  • 작업 트리(Work Tree)
    우리가 작업하고 있는 폴더, 디렉터리
  • 인덱스(index)
    커밋을 실행하기 전의 저장소와 작업 트리 사이에 존재하는 공간 (Staging Area)
  • 스테이징(Staging)
    인덱스에 파일 상태를 기록하는 것

Github

  • Git을 호스팅해주는 웹 서비스
  • Git 저장소 서버를 대신 유지 및 관리해주는 서비스

Git Repository (저장소)

  • 원격 저장소(Remote Repository)
    파일이 원격 저장소 전용 서버에서 관리되며 여러 사람이 함께 공유하기 위한 저장소
  • 로컬 저장소(Local Repository)
    내 PC에 파일이 저장되는 개인 전용 저장소

Git 기본 명령어

init

  • git init
  • 생성하기
  • local repository를 만든다. 이 로컬 저장소는 바로 .git에 들어가있음.
  • 새로운 git 저장소 생성

pull

  • git pull
  • 가져와 병합하기
  • 원격 저장소에서 로컬 저장소로 업데이트
  • 원격 저장소에서 최신 변경 이력을 다운로드. 내 로컬 저장소에 그 내용을 적용

fetch

  • git fetch origin
  • 가져오기
  • 원격 저장소의 내용을 확인만 하고 로컬 데이터와 병합은 하고 싶지 않은 경우에 사용.
  • 원격 저장소의 최신 이력을 확인, 가져온 최신 커밋 이력은 이름 없는 브랜치로 로컬에 가져옴. 'FETCH_HEAD'의 이름으로 체크아웃
  • fetch 명령어 후 merge 를 수행하는 것은 pull 명령어와 동일한 기능

add

  • git add <인덱스에 등록할 파일명>
  • 추가하기
  • 변경사항을 인덱스에 등록

commit

  • 추가하기
  • git commit -m "커밋 내용"
  • 이전 커밋 상태부터 현재 상태까지의 변경 이력이 기록된 커밋(or 리비전) 생성됨
  • '작업 트리'에 있는 변경 내용을 저장소에 바로 기록하는 것이 아니라 그 사이 공간인 '인덱스'에 파일 상태를 기록(stage - 스테이징 한다고 표현함.)
    commit 진행 시, 내용 입력 필수

push

  • 밀어넣기
  • git push
  • 원격 저장소로 변경된 파일을 업로드하는 것

clone

  • 복제하기
  • git clone URL
  • 원격 저장소를 복제(원격 저장소의 내용을 통째로 다운로드함)
  • 변경 이력도 함께 로컬 저장소에 복제 되어옴. 원래 원격 저장소와 똑같이 이력을 참조하고 커밋 진행이 가능함.

reset

  • 되돌리기, 이력 x
  • git reset <옵션> <돌아가고싶은 커밋>
  • 돌아가려는 커밋으로 리파지토리는 재설정, 해당 커밋 이후의 이력은 없앰.

revert

  • 되돌리기, 이력 o
  • git revert <되돌릴 커밋>
  • 상태를 되돌리는 명령어, reset 명령어와 달리 이전 이력은 그대로 유지

merge

  • 병합하기, 바로 합치기
  • 여러 개의 브랜치를 하나로 모을 수 있음
  • 내가 끌어온 저장소가 최신 버전이 아닌 경우, 즉 내가 pull 을 실행한 후 다른 사람이 push 를 하여 원격 저장소를 업데이트 해버린 경우에는 내 push 요청이 거부될 수 있음
  • 이런 경우 다른 사람의 업데이트 이력을 내 저장소에도 갱신 해야함.

rebase

  • 병합하기
  • 브랜치 이력 재정렬하기
  • 히스토리 관리를 별로 신경쓰지 않고 혼자서만 커밋 or 믿을수 있는 소수만 커밋한다면 merge 대신 rebase 사용을 권장함.

stash

  • 임시 저장하기
  • 파일의 변경 내용을 일시적으로 기록해두는 영역
  • 작업 트리와 인덱스 내에서 아직 커밋하지 않은 변경을 일시적으로 저장해 둘 수 있음
  • stash 에 저장된 변경 내용은 나중에 다시 불러와 원래의 브랜치나 다른 브랜치에 커밋 가능함.

checkout

  • 전환하기
  • git checkout <브랜치명>
  • 원하는 다른 브랜치로 전환 시 사용

merge (바로 합치기) vs rebase (브랜치 이력 재정렬하기)

  • merge
    변경 내용의 이력이 모두 그대로 남아 있기 때문에 이력이 복잡해짐
  • rebase
    이력은 단순해지지만, 원래의 커밋 이력이 변경됨. 정확한 이력을 남겨야 할 필요가 있을 경우에는 사용하면 안됨.

리모트(Remote) 저장소

인터넷이나 네트워크 어딘가에 있는 저장소

  • 리모트 저장소 확인: git remote
  • 리모트 저장소 추가: git remote add <단축이름> url
  • 리모트 저장소 살펴보기: git remote show <리모트 저장소 이름>
  • 리모트 저장소 이름 변경: git remote rename <기존 리모트 저장소 이름> <변경할 리모트 저장소 이름>
  • 리모트 저장소 삭제: git remote remove <리모트 저장소 이름>

출처
https://sloth9143.github.io/git-basic-command/

profile
공부방

0개의 댓글