Git의 기본 저장 단위 Commit Commit은 Git의 기본 저장 단위이다. 우리는 Commit을 파일들에 대한 스냅샷이라고도 부르며, Commit은 Commit을 찍은 시간의 파일들의 상태에 대해 저장한다. Commit은은 tree, parent, author, commiter,message 5가지 구성요소로 이루어져 있다. tree : tree와 blob를 포인팅하는 구성요소이다. parent : 해당 커밋 직전에 어떤 커밋이 있었는지 포인팅한다. author : 작성자. commiter : 커밋을 만든 사람. message : 커밋을 설명하는 메세지. 예를 들어 commit이 두 개 찍힌 다음과 같은 로그를 가진 Git 폴더가 있다고 해보자 $ git log --oneline 6e3a608 ..
commit
Git merge란? git branch를 다른 branch로 합치는 과정을 merge라 한다. merge의 기본 단위는 브랜치이며, git merge 명령어로는 커밋 단위로 합치기가 불가능하다. Fast Forward Merge 가장 기본적인 merge는 바로 Fast Forward Merge이다. Fast Forward Merge는 현재 브랜치의 HEAD가 대상 브랜치의 HEAD까지로 옮기는 merge이다. Fast Forward Merge는 다음 명령어를 통해 가능하다. git switch [현재 브랜치] git merge [대상 브랜치] 예를 들어 아래와 같은 git log가 있다고 해보자. feature-view branch의 HEAD는 third commit이며, main 브랜치의 HEAD는 ..
HEAD란 무엇인가? Git을 다루다보면 git log를 찍었을 때 HEAD가 특정 커밋에 찍혀있는 것을 볼 수 있다. 모든 브랜치에는 HEAD 값이 존재하는데 HEAD란 해당 브랜치의 마지막 커밋을 뜻한다. 따라서 아래와 같이 HEAD가 특정 커밋에 찍혀 있을 경우 해당 브랜치의 마지막 커밋이 해당 부분이라는 것을 알 수 있게 된다. 즉, HEAD는 특정 브랜치의 마지막 커밋에 대한 포인터이다. HEAD -> [branch name] 다른 브랜치의 HEAD확인하기 위의 master branch에서 다음 명령어를 이용해 feature-layout이라는 새로운 브랜치를 만들었다고 해보자. git checkout -b "feature-layout" 브랜치를 새로 만들게 되면 이전 master의 commit들..
Git의 세가지 영역 : Working Directroy, Staging Area, Repository Git은 Working Directroy, Staging Area, Repository 세가지 영역으로 이루어져 있다. Working Directory는 작업 공간으로 아직 Git에 기록될 준비가 되지 않은 파일들이 위치하는 공간이다. Staging Area는 대기 공간으로 Git에 기록될 준비가 된 파일들이 위치하는 공간이다. 마지막으로 Repository는 Git에 기록된 파일들이 위치하는 공간이다. 위 세가지 영역은 긴밀히 협력하면서 Git을 구성한다. git init가 동작하는 방식 git init은 Git의 세가지 영역과 Git을 구성하기 위한 파일과 메타데이터를 만들어낸다. 아무것도 없는 폴..