본문 바로가기

개발 관련/git

브랜치(git branch) - 병합(git merge)

git init {directory name}
  • git init 다음에 디렉터리 이름 입력 시, 새로운 디렉터리를 만들고 저장소를 초기화하는 과정을 한꺼번에 처리 가능

 

git checkout master
  • 브랜치를 병합하려면 master 브랜치로 체크아웃

병합하기(git merge)

git merge {branch name}
  • branch name에 기재된 branch와 master 브랜치와 병합

 

# 커밋 메시지 추가 및 수정 git merge {branch name} --edit
git merge {branch name} --no-edit
  • 브랜치 병합 시 편집기 창이 열리지 않게 하는 명령어
  • 깃에서는 병합 시 브랜치를 자동으로 합쳐주는 기능이 있음

충돌 발생 시 해결하기

충돌(conflict) 발생
merging 상태

  • master 브랜치와 다른 브랜치에 있던 내용이 충돌했기 때문
  • 충돌이 생긴 문서는 자동으로 병합될 수 없으므로 사용자가 수동으로 해결해야 함

  • master content 2는 현재 브랜치, 즉 master에서 수정한 내용이고, o2 content 2는 병합할 브랜치에서 수정한 내용

  • <<<<, >>>>, ==== 등의 기호들과 HEAD를 제거하고 각 내용을 참고하여 파일 내용수정
    git commit -am "merge {branch name} branch"​

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

  •  브랜치를 병합한 후 더 이상 사용하지 않는 브랜치는 깃에서 삭제할 수 있음
  • 브랜치를 삭제하더라도 다시 같은 이름의 브랜치를 만들면 예전 내용을 다시 볼 수 있음

 

  • branch 조회
git branch

 

  • 저장소의 기본 브랜치는 master이므로, 브랜치 삭제 시 master 브랜치에서 삭제해야함
    git checkout master​
  • 브랜치 삭제하기 : -d 옵션
    git branch -d {branch name}​

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

git stash    # git statsh save
  • 브랜치에서 파일을 수정하고 커밋하지 않은 상태에서 다른 파일을 커밋해야하는 경우 등에 사용
  • 커밋하지 않은 수정 내용을 어딘가에 보관하기

  • 감춘 파일들은 git stash list 명령어로 확인 가능

git stash list

  • 가장 먼저 감춘 stash@{0}부터 stash@{1}, stash@{2},..., stash@{n}으로 담기며, 새로운 파일이 추가되면 기존 파일(stash@{0})은 stash@{1}에 담기며, 새로운 파일은 stash@{0}에 담김 --> 스택(stack)처럼 쌓임(선입후출)
    git stash pop​
  • 위 명령어를 통해 가장 최근 항목을 되돌릴 수 있음

git stash pop

  • git stash apply : stash 목록에 저장된 수정 내용을 나중에 또 사용할지도 모를 때 사용 
  • git stash drop : stash 목록에서 가장 최근 항목 삭제

+)

  • HEAD는 현재 작업 트리(워킹 디렉터리)가 어떤 버전을 기반으로 작업 중인지 가리키는 포인터
  • HEAD는 기본적으로 master 브랜치를 가리킴
  • 브랜치는 기본적으로 브랜치에 담긴 커밋 중 가장 최근의 커밋을 가리킴
  • git reset 명령 사용 시 HEAD가 가리키고 있는 브랜치의 최신 커밋을 원하는 커밋으로 지정 가능

 

 

 

지금까지의 내용은 Do it! 지옥에서 온 문서 관리자 깃 & 깃허브 입문의 101페이지에서 129페이지를 읽고 정리한 내용이다.