3 minute read

💡 해당 내용은, 생활코딩 영상을 기반으로 작성하였습니다.

Git Branch 개요

  • 💫 Branch를 만들다 : 작업을 진행하다가 분기되는 현상
  • 💫 git checkout -b 브랜치명
    • git branch 브랜치명 + git checkout 브랜치명
    • 즉, 브랜치 생성과 체크아웃을 동시에 하는 명령어
  • 💫 Master Branch : Git을 사용하는 순간부터 기본 브랜치를 사용하게 되는데 해당 브랜치가 master임
  • 💫 Branch 사용 예시
    • 고객사에게 제공하는 특별한 기능이 추가되는 경우에 원래 소스 코드를 변경하지 않으면서 고객을 위한 커스텀 코드를 추가해야하는 경우
    • 필요없어 보이는 개발건에 관해 Branch를 만들어서 작업 진행
    • 지금까지 개발한 건을 서버에 반영해야해서 테스트 용이 따로 필요할 때, 즉 메인이 되는 작업과 테스팅을 위한 작업이 나뉠때

Branch 생성 및 사용 기초

  1. 파일 생성
    1. vim f3.txt : 내용 작성 및 저장 (I > 내용 작성 > esc > :wq)
    2. git commit -m “1” : 커밋메세지 바로 작성
    3. vim f3.txt : 내용 수정 및 저장
    4. git commit -am “2”
    5. -a : commit 전에 add가 바로 됨 - 아직 버전관리가 되고 있지 않은 파일, 즉 한번도 add가 되지 않은 파일은 자동으로 add가 되지 않음
    6. -m : 커밋메세지 바로 작성
    7. git log : 로그 확인
  2. Branch 확인
    1. git branch : 현재 우리가 보유하고 있는 branch를 확인하는 명령어
  3. Branch 생성
    1. git branch 브랜치이름 : 해당 이름을 가진 브랜치를 생성하는 명령어
    2. Git branch 를 통해 브랜치 생성 확인 : exp와 *master 두개가 존재함 -> *표시는 현재 사용하고 있는 브랜치라는 뜻
  4. 현재 사용하고 있는 Branch 변경
    1. git checkout 사용하고자하는브랜치
    2. git branch 해보면 exp에 * 표시 있는 것 확인 가능
    3. git log 를 통해 로그 확인 : master과 결과가 같음 —> ** 즉, 브랜치를 생성하면 그 생성한 브랜치는 현재 속해있는 브랜치의 상태를 그대로 복사함
  5. 파일 내용 변경 후 add, commit
    1. vim f3.txt 해서 내용 변경
    2. git add f3.txt
    3. git commit -m “3”
    4. git log : 커밋메시지 3까지 보임 Author Riley kowlkh@gmail com
    5. git checkout master > git log : 마스터 브랜치로 변경한 뒤 로그 확인하면 커밋메세지 2까지밖에 안보임 commit 300ea2ee6a1f2871557ddbd4790985ff7bb06a63 (HEAD - master)
    6. cat f3.txt : 브랜치에 따른 파일의 내용 확인 —> 속해있는 브랜치에 따라 같은 파일의 내용이 달라짐
      1. exp : abc
      2. Master : ab

Branch 정보 확인 방법

  1. git log —branches : 현재 자신이 Checkout 되어있는 Branch 외의 모든 Branch를 보여줌
  2. git log —branches —decorate
    브랜치 마다의 가장 최신 커밋이 무엇인지까지 나타내줌
    (HEAD -> exp) : 현재 우리가 Checkout 되어있는 브랜치가 exp임을 알려줌
  3. git log —branches —decorate —graph
    Git Graph를 보여줌
  4. master로 checkout한 뒤 파일 수정 > add > commit 진행하기
  5. git log —branches —decorate —graph
    해당 명령어를 통해 브랜치간의 공통 조상 확인 commit 764a039b6b776c2a9b81ed2b6d1442d9be9378d4 (HEAD -› master)
  6. git log —branches —decorate —graph --online
    한줄로 깃그래프를 보여줌 764a039 (HEAD - master) 5

Branch 간의 차이점을 확인하는 방법 3가지

  1. git log 브랜치1..브랜치2 : Branch 간의 차이점을 확인하는 명령어로서 브랜치1에는 있고 브랜치2에는 없는 내용 확인 가능 Fri Mar

  2. git log -p 브랜치1..브랜치2 : 소스코드까지의 차이점을 확인할 수 있음 Author Riley kowlkh@gmail com

  3. git diff 브랜치1..브랜치2 diff --git af3 txt bf3 txt

Branch 병합(Merge)시키기

Exp의 내용을 Master Branch로 옮기기

  1. git checkout Master : 마스터 브랜치로 체크 아웃함
  2. git merge exp
    • exp의 내용을 머지시킴
    • 해당 명령어 입력하면 merge했다는 커밋메세지가 vim으로 뜨게 되고, :wq를 입력해 저장 후 종료하면됨 terge made by the 'ort' strategy
  3. 머지 후에 git log —branches —graph —decorate —oneline 으로 브랜치 관계 확인 a146726 (exp)
  • 2개의 부모를 가짐 : 5번, 3번
    1. Exp Branch로도 동일한 작업 수행 a146726
  • (HEAD -> exp, master) : 두개가 동일한 브랜치가 되었음을 확인함
    1. git branch -d exp : 사용하지 않는 브랜치 삭제
  • (HEAD -> master) : exp가 삭제되어 master branch만 남은 것 확인
  • git branch -D exp: Branch 를 Merge하지 않았을 때 강제로 삭제하는 방식

Branch 충돌 해결

  • Branch 충돌 경우 예시
    • 문제 없을 경우 :
    • 같은 이름의 파일이 다른 내용을 가지고 있을 때 Merge할 경우에, 파일의 내용이 모두 병합됨
    • 같은 파일임에도 수정한 위치가 다르다면 모든 내용이 병합됨
    • 문제 있을 경우 :
    • 그러나, 같은 파일에서 같은 내용이 수정되었을 때 브랜치 충돌이 일어남 ~Documentsgitfth
  • 해결 방법 (both modified)
    • 충돌난 파일을 열어봄
      ====== 구분자 위에 ««< HEAD 라고 되어있는 부분이 현재 체크아웃된 브랜치이고, 아래 »»> exp 부분이 해당 브랜치의 내용이라는 뜻
    • 해당 파일에서의 충돌 내용을 직접 수정한 뒤 git add > git commit 하게 되면 해당 Conflict된 부분이 처리 되었다는 것을 확인할 수 있음 ~Documentsgitfth

Leave a comment