git 원리

7호선개발자·2020년 8월 25일
0

파일명이 달라도 내용이 같으면 파일들은(index) 같은 object를 가리킨다

git은 파일을 add하면 파일의 내용을 SHA1 해시 알고리즘을 통하여 값을 만든다

그 값을 통하여 object 디렉토리 안에 내용들을 추가한다

commit 원리

tree-> 커밋한 시점에 파일명과 파일 내용을 담고 있음

parent-> 앞선 커밋의 내용들을 담고 있음

object 폴더에는 3가지가 있다

  1. blob-> 파일의 내용
  2. tree -> 특정 디렉토리의 파일명과 내용의 대한 blob
  3. commit -> commit의 내용

status 원리

working space내용과 index의 내용이 다르면 add를 안한상태이다(빨간modify)

index의 내용과 object(local repository)의 commit 안에 tree의 내용이
다르면 대기상태이다 (add는 했지만 commit은 안한상태 초록modify)

stash 원리

브렌치를 따서 작업하다가 커밋을 안한상태에서 마스터 브렌치로 가려하는 상황일때

마스터 브렌치로 가버리면 이전 브렌치에 수정사항이 마스터 브렌치에 영향을 끼치게 된다.

그래서 이런 상황일때 stash를 하고 마스터 브렌치로 가면 된다

마스터 브렌치에서 다시 이전 브렌치로 갔을때 stash 되있던걸 apply하면

이전 상황과 똑같이 된다.

brench 원리

fast-foward란 merge를 했을때 새로운 커밋을 생성하지 않고

merge대상의 커밋에서 병합이 되는것이다

head는 현재 브렌치와 그 브렌치의 최신 commit을 알려준다

어떠한 파일과 디렉토리를 가지고 있어야 되는가에 대한 정보는 트리가 알려줌

브렌치 머지할때 conflict는 같은 부분을 수정했을때 일어난다

다른부분은 저절로 병합된다

git reset --hard ORIG_HEAD
orig head를 통해 최신 명령을 취소할 수 있다

git diff working copy와 index의 내용을 비교함

2 way merge

base를 참고 안하고 2개의 merge를 병합

3 way merge

base를 참고하여 2개의 merge를 병합

3 way merge는 어떤장점

profile
안녕하세요

0개의 댓글