브랜치는 커밋을 가리키는 포인터와 비슷하다.
분기(branch) : 기존에 저장한 파일을 master 브랜치에 그대로 유지하면서 기존 파일 내용을 수정하거나 새로운 기능을 구현할 파일을 만듦
병합(merge) : 새 브랜치에서 원하는 작업을 다 끝낸 후 원래의 master 브랜치에 합치는 것
HEAD는 현재 작업중인 브랜치 master를 가리키고 있다
git branch : 브랜치 확인
git branch 브랜치 이름 : 브랜치 생성
저장소에 master,ms,google,apple 4개의 브랜치가 있고
모든 브랜치는 최신 커밋이 'work3' 이며
현재 작업 중인 브랜치는 master 브랜치라는 의미이다
git checkout 이동할 브랜치 이름
파일 경로 끝에 apple은 현재 브랜치가 apple이라는 뜻이다.
최신 커밋 해시에서 HEAD가 apple을 가리키고 있다.
git log --oneline --branches : 브랜치 커밋을 한 줄로 볼 수 있다
git log --oneline --branches --graph : 브랜치 커밋을 그래프로 볼 수 있다
│ 는 커밋과 커밋의 관계를 보여준다.
apple 브랜치의 최신 커밋은 apple content 4 인데,
점선을 따라 부모를 찾아가 보면 work3을 만나게 된다.
즉, apple 프랜치에서는
work3 커밋 다음에 apple content 4커밋이 만들어 졌다는 뜻이다.
master 브랜치의 부모 커밋을 찾아보면 work3이다.
즉, master 브랜치나 apple 브랜치는 work 3 커밋까지는 같고
그 이후부터 브랜치마다 다른 커밋을 만들었다는 뜻이다.
git log 브랜치이름..브랜치이름 : 왼쪽에 있는 브랜치를 기준으로 오른쪽 브랜치와 비교
master 브랜치에는 없고 apple 브랜치에만 있는 커밋을 보여준다
커밋 work1 은 master브랜치, o2브랜치가 똑같이 가지고 있다.
그 다음으로 master브랜치에는 master work 2 커밋이 생겼고
o2 브랜치에는 o2 work 2 커밋이 생겼다
병합할 브랜치로 체크아웃 하고 가져 올 브랜치를 merge 한다.
브랜치 병합하면서 만들어지는 커밋 메시지
'o2 work 2' 커밋이 master 브랜치에 병합되면서
'Merge branch o2'라는 커밋이 새로 생겼다.
master 브랜치에 저장된 work.txt
o2 브랜치에 저장된 work.txt
master브랜치에서 o2브랜치를 병합하면서 출동이 발생했다.
충돌이 생긴 문서는 사용자가 직접 충돌 부분을 해결한 후 커밋해야 한다.
<<<<<<< HEAD와 ======= 사이 내용은 현재(master) 브랜치에서 수정한 내용
>>>>>>> o2와 ======= 사이 내용은 o2 브랜치에서 수정한 내용
양쪽 브랜치의 내용을 참고하면서 직접 내용을 수정해야 한다.
수정 후 <<< , === 는 삭제한다
수정한 파일을 스테이지에 올리고 커밋한다.
지금까지의 커밋 관계 확인
git branch -d 삭제 할 브랜치 이름
사용하지 않는 브랜치는 깃에서 삭제할 수 있다.
브랜치는 완전히 지워지는 것이 아니고 다시 같은 이름의 브랜치를 만들면 예전 내용을 볼 수 있다.
저장소의 기본 브랜치는 master 이므로
브랜치를 삭제하려면 master 브랜치에서 해야 한다.
성공적으로 브랜치가 삭제되면 Deleted branch ~ 와 같은 메시지가 나타난다.
git checkout : HEAD 를 제어해서 브랜치를 이동할 수 있다.
git reset : HEAD 가 가리키고 있는 브랜치의 최신 커밋을 원하는 커밋으로 지정할 수 있다. 이때 어떤 브랜치에 있는 커밋이든 지정할 수 있으며, 명령을 수행한 뒤 브랜치와 연결이 끊긴 커밋은 삭제된다.
git stash : 커밋하지 않은 수정 내용을 따로 보관한다. 파일이 trackted 상태여야 한다 (= 한 번은 커밋한 상태여야 한다)
git stash list : git stash 한 목록들을 볼 수 있다.
가장 최근 파일이 stash@{0}에 담긴다.
git stash pop : git stash로 감춰둔 파일을 가장 최근 항목을 꺼내온다.
📢 게시물은 DO it! 깃&깃허브 입문을 참고했습니다.