기타/Git

[2일차] Do it! 지옥에서 온 문서 관리자 깃&깃허브 입문 / 3장

yujindonut 2021. 2. 2. 04:05
728x90

03. 깃과 브랜치

03-1 브랜치란?

 

커밋을 가리키는 포인터와 비슷하다고 생각하자

master 브랜치 : 최신 커밋

새 브랜치 : 기존에 저장한 파일을 master 브랜치에 그대로 유지하면서 기존 파일 내용을 수정하거나 새로운 기능을 구현할 파일

'분기한다' : master 브랜치에서 뻗어 나오는 새 브랜치를 만드는 것

'병합한다' : 분기했던 브랜치를 master브랜치에 합치는 것

 

03-2 브랜치 만들기

 

$git branch / $git branch [브랜치 이름] : 브랜치를 확인하거나 만들때 사용하는 명령

branch만들기 / 확인하기

브랜치는 만들어지면서 master의 최근 커밋을 가져온다

git log를 하게 되면 붙는 표시

저장소에 master, apple 2개의 브랜치가 존재한다 

head->master이므로 현재 작업중인 브랜치는 master브랜치 라는 의미

 

master브랜치에서 content4 commit을 추가함

master브랜치에만 새로운 커밋이 추가되었고, 나머지 브랜치들은 추가가 안되었다

 

-브랜치 사이 이동하기

$ git checkout [브랜치이름]

head를 apple로 변경해주었다
mastercontent4는 추가가 안됨

master브랜치에서 추가된 커밋은 다른 브랜치에 영향을 미치지 않았다는 것을 알 수 있다!

 

03-3 브랜치 정보 확인하기

 

$ git log --oneline --branches // 각 브랜치의 커밋 상태를 볼 수 있음

$ git add . // 현재 저장소에서 수정된 파일을 한꺼번에 스테이지에 올릴 수 있다.

 

$ git log --oneline --branches --graph

수직선을 통해 커밋과 커밋의 관계를 보여줌

apple 브랜치의 최신 커밋은 apple content 4

부모 커밋은 work3임

master 브랜치의 최신 커밋은 master content4

부모 커밋은 work3임

 

-브랜치 사이의 차이점 알아보기

$ git log master ..apple ==> master브랜치 기준으로 master브랜치에는 없고 apple브랜치에만 있는 커밋을 보여준다

$ git log apple ..master ==> apple브랜치 기준으로 apple브랜치에는 없고 master브랜치에만 있는 커밋을 보여준다

 

03-4 브랜치 병합하기

브랜치 병합은 $ git checkout master 를 통해 꼭 master에서 해줘야한다!

$ git merge [병합할 브랜치] ==> Merge branch [병합할 브랜치명] 이라는 커밋이 새로 생긴다

 

 

-같은 문서의 다른 위치를 수정했을 때 병합하기

 

auto-merging으로 알아서 병합해줌

-같은 문서의 같은 위치를 수정했을 때 병합하기

충돌이 났음을 알려준다
두개의 브랜치 내용이 한꺼번에 나타난다

-병합이 끝난 브랜치 삭제하기

 

브랜치 삭제도 master브랜치에서 해야한다

 

$ git branch -d [브랜치 명] 

(master 브랜치에 병합하지 않은 브랜치를 삭제하려면 -D를 이용해 강제로 브랜치를 삭제할 수 있음)

 

삭제한 브랜치는 같은 이름으로 다시 브랜치를 만들면 예전으로 작업했던 내용이 그대로 나타난다. 

브랜치를 삭제하는 것은 완전히 저장소에서 없애는 것이 아니라 깃의 흐름 속에서 감추는 것이다.

 

03-5 브랜치 관리하기

-브랜치에서 checkout과 reset의 작동원리

HEAD : 현재 작업트리가 어떤 버전을 기반으로 작업 중인지를 가리키는 포인터.

브랜치는 브랜치에 담긴 커밋 중에서 가장 최근의 커밋을 가리킨다.

 

$ git checkout [브랜치명] // head가 가리키는 것을 제어하는 명령

 

$ git reset [커밋 해시 값] // 현재 브랜치가 가리키는 커밋을 여러 브랜치 사이를 넘나들면서 제어 할 수 있음

명령을 수행한 뒤 브랜치와 연결이 끊긴 커밋은 삭제된다.

 

-수정 중인 파일 감추기 및 되돌리기 - git stash

 

[브랜치에서 파일을 수정하고 커밋하지 않은 상태에서 급하게 다른 파일을 커밋해야 할 경우 ! 당장 커밋 하지 않을 작업들은 감춰둘 수 있다]

 

$ git stash (save)// 이것을 사용하려면 파일이 tracked상태여야한다. (한번은 커밋이 되야함)

$ git stash pop // 수정된 상태가 저장된 상태 그대로 돌아간다. 계속 수정하거나 커밋할 수 있음

728x90