(git & GitHub) Go deeper than git

Mirrer·2022년 5월 7일
0

git & GitHub

목록 보기
5/15
post-thumbnail

git의 장점

gitSpanshot, 분산 버전관리시스템은 다른 vcs와 차별점

Spanshot

vcs(version control system)는 크게 Delta, Spanshot 2가지 방식으로 버전을 관리한다.


  • Delta 방식

Delta 방식은 타 vcs에서 사용되며 각 파일이 생겨난 버전에 해당 파일 전체가 저장된다.

그리고 이후 수정사항들이 발생하면 그 변경점들이 저장된다.

변화들의 누적이 계산된다.

  • Spanshot 방식

Spanshot 방식은 git에서 사용되며 새로운 버전이 만들어질때 해당 버전의 각 파일이 최종 상태 그대로 저장된다.


분산 버전관리시스템

vcs(version control system)는 버전을 관리하는 방식에 따라 중앙집중식, 분산식으로 나뉜다.


  • 중앙집중식 버전관리

중앙집중식 버전관리는 타 vcs에서 사용되며 원격서버에 모든 관리내역들이 저장된다.

그래서 로컬은 원격서버에서 다운받은 파일들로만 작업을 수행한다.

중앙집중식 버전관리는 원격 저장소에 의존적이다.

  • 분산 버전관리

분산 버전관리는 git에서 사용되며 로컬에 파일뿐만아니라 전체 git커밋과 브렌치들까지 다운받아서 작업을 수행한다.

그래서 중앙집중식과는 다르게 로컬에서 자유롭게 작업이 가능하다.

분산 버전관리는 모든 구성원들이 git의 상태까지 공유가 가능하다.


git의 3가지 공간

git에는 Working directory, Staging area, Repository의 영역이 존재

git에서 관리하는 파일들은 modifed, staged, commited의 3가지의 상태를 가진다.

그리고 각 상태는 working directory, staging area, repository 영역으로 구분된다.


Working directory

Working directorygit add명령어를 수행하기 전 영역으로 untracked, tracked로 구분된다.

untrackedadd가 수행된 적 없는 파일을 의미하고, trackedadd가 수행되고 변경사항이 있는 파일을 뜻한다.

Working directory에서 git add명령어를 수행하면 Staging area영역으로 이동한다.

Staging area

Staging area커밋을 위한 준비 단계이다.

Staging area에서 git commit명령어를 수행하면 repository영역으로 이동한다.

Repository

Repository커밋된 단계이다.

Repository.git directory라고도 불린다.


staging area에서 working directory로 이동

위에서 살펴본 각 상태는 일반적으로 working directory, staging area, repository 영역순으로 실행된다.

하지만 아래 명령어를 사용하면 역순 즉 staging area에서 working directory로 이동할 수 있다.

git restore --staged (파일명)

이 때 --staged를 입력하지 않으면 working directory에서도 제거된다.


reset 옵션

앞선 포스팅에서 git reset --hard명령어를 통해 reset의 개념과 사용 방법에 대해서 설명했다.

하지만 reset에는 다른 옵션 또한 존재한다.

이 옵션들은 앞서 설명한 git의 3가지 공간으로 각각 다른 방식으로 이동한다.

  • --soft : repository에서 staging area로 이동

  • --mixed (default) : repository에서 working directory로 이동

  • --hard : 수정사항 완전히 삭제


HEAD

HEAD는 특정 브랜치에 최신 커밋을 의미한다.

즉 브랜치의 가지들 중 가장 끝자락에 위치한 커밋을 지칭한다.


Checkout

앞선 포스팅에서 설명한 reset, revert는 이동과 동시에 git의 히스토리 내역을 변경한다.

하지만 Checkoutgit의 히스토리 내역은 변경하지 않고 파일들의 상태만 뒤로 옮긴다.

Checkout^ 또는 ~ 갯수만큼 이전으로 이동하며 다음과 같이 사용한다.

git checkout HEAD^
git checkout HEAD^^^
git checkout HEAD~5

만약 이동을 한 단계 되돌리려면 -을 사용한다.

git checkout -

참고 자료

Book - Git
Do it! 지옥에서 온 문서 관리자 깃 & 깃허브 입문

profile
memories Of A front-end web developer

0개의 댓글