다라다라V
article thumbnail
728x90
반응형
새로운 기능을 추가하기 위해서는 기존의 잘 작성된 코드는 그대로 두고 새 소스코드를 추가한 버전만 따로 관리해야합니다. 이럴 때 사용하는 것의 "브랜치(branch)" 라는 기능입니다.

📌 브랜치란?

📚 브랜치가 필요한 이유

프로그램을 만든 후 각 고객사 별로 각 상황에 맞는 프로그램을 변경할 수 있습니다. 

이렇게 하기 위해 가장 쉬운 방법은 처음에 작업했던 저장소(그림의 master) 전체를 여러 개 복사해서 각 고객사의 이름을 붙인 저장소마다 버전 관리를 따로 하는 방법이 있습니다.

그러나 이렇게 관리하다보면 내용이 겹치는 것이 너무 많아 관리가 힘듭니다. 또한 같은 기능을 위해 다른 저장소의 코드를 그대로 가져왔을 때 문제가 발생할 수 있습니다.

이럴때 사용하는 것이 깃의 브랜치입니다.

 


📚 브랜치 기능 살펴보기

  • 깃은 버전 관리를 시작하면 기본적으로 master 브랜치가 만들어짐
  • 사용자가 커밋할 때마다 master 브랜치는 최신 커밋을 가리킴
  • 브랜치는 커밋을 가리키는 포인터와 비슷하다고 생각하면 좋음

 

  • 기존의 저장된 파일을 master 브랜치를 유지하면서 기존의 파일 내용을 수정하거나 새로운 기능을 구현할 파일을 만들 수 있음
  • 이렇게 master 브랜치에서 뻗어 나오는 새 브랜치를 만드는 것을 "분기(branch)"한다고 함
  • 분기했던 브랜치를 master 브랜치에 합치는 것을 "병합(merge)"한다고 함

📌 브랜치 만들기

📚 새 브랜치 만들기 

  • git branch 명령어 : 깃 브랜치를 만들거나 확인하는 명령어
    • git branch : 현재 브랜치 상태를 확인
    • git branch "이름" : 이믈 상태의 깃 브랜치 만들기

📚 브랜치 사이 이동하기 - git checkout

  • git checkout "이름" 명령어 : 해당 이름의 브랜치로 이동하는 것

📌 브랜치 정보 확인하기

📚 새 브랜치에서 커밋하기

  • git log --branches : 브랜치의 커밋을 함께 볼 수 있음
  • git log --branches --graph : 브랜치와 커밋의 관계를 더 보기 쉽게 그래프 형태로 표현함

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

  • git log master.."이름" : master와 이름 브랜치 사이의 차이점을 확인할 수 있음

📌 브랜치 병합하기

각 브랜치에서 작업을 마무리하고 기존 브랜치와 합칠 때는 "브랜치 병합(merge)"라고 합니다.

📚 파일 병합하기

📃 서로 다른 파일 병합하기

  • 원하는 브랜치로 이동 후 git commit 으로 커밋하기
  • git checkout master : 병합 전 반드시 master 브랜치로 이동하여 병합
  • git merge "이름" : 병합하려는 브랜치의 이름을 넣어 병합

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

  • git이 브랜치를 자동으로 합쳐주기에 똑같이 git merge 로 병합

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

  • 각 브랜치에 같은 파일 이름을 가지고 있으면서 같은 줄을 수정했을 때 브랜치를 병합하면 브랜치 충돌(conflict)이 발생
  • git merge 명령을 실행했을 때 빔이 실행되는 것이 아니라 CONFLICT 라는 메시지가 뜨면 충돌이 발생한 것
  • 충돌한 내용은 직접 수정해야함

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

  • git branch -d "이름" : 해당 브랜치를 삭제함
  • Deleted branch "이름" 이라는 메시지가 뜨면 성공적으로 브랜치가 삭제된 것

📌 브랜치 관리하기

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

  • git stash 명령어 : 커밋하지 않고 작업중인 파일을 잠시 감춰둘 때 사용하는 명령어
  • 파일을 수정하고 커밋하지 않은 상태에서 다른 파일을 커밋할 때 경고문을 지우는 용도
  • 필요한 작업을 끝내고 감춰둔 파일을 꺼내오면 됨
반응형
profile

다라다라V

@DaraDaraV

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!