[Git, Github] Git의 버전 관리 방식, 깃의 3가지 공간, git reset option

JUNHO YEOM·2022년 11월 29일
0

Git, Github

목록 보기
11/27
post-thumbnail

Git이 특별한 이유

snap shot

깃은 델타 방식과 스냅샷 방식이 있습니다.

델타 방식

버전 1에서 3개의 파일이 만들어 졌고,
수정사항이 생겨납니다.
델타 방식에서는 변경점들이 저장되는 방식입니다.

델타 방식 특징

commit 변경사항이 많은 경우 최초 코드로 부터
계속해서 변경사항을 찾아나가며 현재의 코드를 만들어 나가기 때문에
프로젝트와 commit변경사항이 많을 수록 속도가 느려집니다.

스냅샷 방식

새로운 버전이 만들어질때 해당 버전의 각 버전이 최종 상태 그대로 저장하는 방식입니다.

스냅샷 방식 특징

변경된 사항들이 최종 상태 그대로 계속해서 저장되기 때문에 많은 commit 변경사항들이 많더라도
빠른 속도를 유지할 수 있습니다.


분산 버전관리

중앙 집중식 버전 관리

중앙 관리 되는 장소에 모든 관리 내용들이 저장됩니다.
로컬에는 중앙에서 현 버전으로 다운받은 파일들로만 작업이 가능합니다.
원격 저장소에 의존적이 됩니다.
인터넷이 제한될 경우 로컬 작업에 영향을 받습니다.

분산 버전 관리

git clone을 통해서 로컬에 받아오면
전체 Git commit과 브랜치들까지 받아올 수 있기 때문에
인터넷 연결상태와 관계없이 로컬에서 작업이 가능합니다.
모든 구성원들이 git의 상태까지 공유하기 때문에
각제 편한 상태로 작업하다가 pull과 push를 통해 자유로운 작업이 가능합니다.

Git의 3가지 공간

Working directory

  • 파일 변경사항들이 들어가는 공간입니다.
    • Tracked: 깃이 관리하는 파일입니다.
    • Untracked: 깃이 관리하지 않는 파일(add 된 적 없는 파일)입니다.

Staging Area

  • Repository에 들어가기 위한 준비공간입니다.
  • git .명령어를 통해서 파일들이 Stagint Area에 진입하게 됩니다.

Repository

  • commit들이 저장되는 공간
  • git commit을 통해 Repository에 저장됩니다.

파일의 삭제와 이동

git rm

git rm

관리하고 있는 파일을 삭제합니다.

  • 파일 삭제 => git add . 한 상태와 동일합니다.

git mv

git mv "변경전 파일 이름" "변경 후 파일 이름"

관리되고 있는 파일 이름을 변경합니다

  • 파일 이름을 변경 => git add . 한 상태와 동일합니다.

파일을 staging area에서 working directory로 옮기기

git restore --staged "파일명"
  • --staged를 빼면 working directory에서도 제거됩니다.(변화한 코드 자체를 되돌립니다)
  • 예전에는 git reset HEAD명령어로 사용했습니다.

git reset의 옵션들

mixed

git reset --mixed

기본값 입니다.
repository에서 working directory로 이동합니다.
(commit과 add를 하기 전입니다.)

soft

git reset --soft

수정사항을 repository에서 staging area로 이동합니다.
(commit 하기 전으로 되돏립니다.)

hard

git reset --hard

수정사항을 완전히 삭제합니다.

0개의 댓글