컴퓨터 과학/[인프런: 얄팍한 코딩사전] Git & GitHub

Chapter 05. Git 보다 깊이 알기

계란💕 2022. 10. 5. 09:49

5.1 Git을 특별하게 하는 것

 

Git의 델타 방식과 스냅샷 방식

  • 델타 방식
    • 버전 별로 특정 파일의 변화가 누적되서 저장된다.
    • 깃에서 브랜치를 바꾸거나 뭔가를 할 때마다 각 파일을 처음 만들어진 시점 부터 변경사항들에 보면서 현재 내용을 계산해야한다. => 관리한지 오래됐을 수록 가져오는 시간이 길어진다.
    • SVN 에서 사용한다.
  • 스냅샷 방식: 새로운 버전이 만들어질 때, 해당 버전의 각 파일의 상태가 최종 상태 그대로 저장되어 있다.   
    • 변화가 없으면 그대로 가져오고 변화가 있는 파일은 최종 파일 내용일 저장되어 있다.
    • 커밋 개수가 많은 경우에 효율적이다.
    • 현 시점의 파일 내역이 저장되어 있어서 편리하다.
    • Git 에서 사용한다.

 

  • 중앙 집중식 버전 관리: CVS나  subVersion 같은 VCS는 원격 서버에 모든 관리 내역이 저장된다.
    • 인터넷이 안 되거나 하는 상황에서 크게 불편하다.
  • 분산 버전 관리 시스템: 모든 구성원이 깃의 상태까지 공유한다.
    • 각자 원하는 시간에 작업하고 push pull 로 동기화하면서  협업 가능
    • ex) GitHub

 

 

 

5.2 Git의 세 가지 공간 

  • working directory (add 전 상태)
    • untracked: .gitignore에 추가되서 무시되는 파일이거나 새로 만들어서 깃이 관리해본적 없는 파일
    • tracked: add된 적 있고 변경 내역이 있는 파일
  • staging area (commit 전 상태): 
  • repository

 

 

파일의 삭제와 이동

  • git rm "파일명": 파일을 삭제한다. (확장자명 포함)
  • git mv "기존 파일명"  "바꿀 파일명" : 파일명을 바꾼다.
  • git restore --staged "파일명": 파일을 스테이지 상태로부터 되돌린다.
    • staging area => working directory 로 옮긴다.
  • git restore "파일명": working directory 에서도 아예 빼버린다. (상태 자체를 되돌리는 것이다.)
  • git reset

 

 

git reset 의 세 가지 옵션

  • reset은 이동과 동시에 없애버린다. 이와 다르게 check out은 시간선을 그대로 두고 파일 상태만 그 시점으로 돌린다.
  • git reset --soft: repository => staging area 로 이동
  • git reset --mixed (default): repository => working directory로 이동
  • git reset --hard: 수정 사항을 완전히 삭제한다.

 

 

 

5.3 HEAD

 

Git의 HEAD란?

  • head는 "현재 속한 브랜치의 가장 최신 커밋"을 의미한다. 커밋되지 않은 내역이 있는 경우는 가지의 맨 끝단이 head가 아니다.
  • git switch "옮기고 싶은 브랜치"
  • git checkout HEAD^:  check out으로 앞 뒤 옮기기
    • history는 그대로 두고 파일 상태만 뒤로 옮기는 , 시간선을 바꾸지 않고 과거로만 간다????
    • "^" 또는 "~"을 붙이는데 이 개수만큼 옮길 수 있다.
    • "^" 또는 "~"뒤에 원하는 만큼 숫자를 붙여서 이용 가능
    • git checkout - : 이동을 한 단계 되돌린다.
    • git checkout "커밋 해시": 커밋 해시로도 가능하다.
  • git reset --hard HEAD~2

 

 

 

5.4 fetch vs pull

 

fetch 와 pull의 차이는?

  • fetch: 원격 저장소의 최신 커밋을 로컬로 가져오기만 한다.확인만 하고 싶은 경우에 이용한다.
  • pull: 원격 저장소의 최신 커밋을 로컬로 가져와 merge 또는 rebase

 

 

 

 

 

 

출처 - https://www.inflearn.com/course/%EC%A0%9C%EB%8C%80%EB%A1%9C-%ED%8C%8C%EB%8A%94-%EA%B9%83/dashboard

 

제대로 파는 Git & GitHub - by 얄코 - 인프런 | 강의

코알못도 따라올 수 있는 친절하고 쉬운 강좌! 현업 개발자는 Git 박사로 들어주는 끝판왕 강좌!, - 강의 소개 | 인프런...

www.inflearn.com