[Git] Branch와 Merge 사용하기

suhjaesuk·2022년 10월 21일
0

Git

목록 보기
4/6
post-thumbnail

😄 Branch와 Merge 사용하기

**30분 요약 강좌 시즌4 : 알잘딱깔센 GitHub 를 참고하여 정리하였습니다.

git branch : 별도로 작업하여
git merge : 합치는 것

Branch 확인 및 생성하기

git branch : 현재 브랜치 목록과 현재 브랜치 확인

$ git branch

git branch 브랜치이름 : 브랜치를 현재 시점에 만들 수 있습니다. Gary라는 브랜치를 만들어 보겠습니다.

$ git branch Gary

git에서의 기본 브랜치는 master이고 GitHub에서의 기본 브랜치는 main입니다. git init 명령을 통해 초기화하고 레포지토리에 연결하는 과정(해당 챕터에서 진행하는 과정)을 진행하게 되면 기본 브랜치는 master가 됩니다. 앞에 언급된 명령어 git config --global init.defaultBranch main 로 설치 시 또는 설치 후 설정을 통해 기본 브랜치 이름을 바꿀 수도 있습니다.
깃허브에서 제공하는 초기화 설정을 사용하거나 가이드라인을 따라 진행한다면 기본 브랜치가 main이 됩니다.

Branch 이동하기

git checkout : checkout은 브랜치 변경 또는 작업 트리 파일 복원을 할 수 있습니다. 하지만 기존의 checkout이 가진 기능이 너무 많았습니다. 때문에 Git 2.23에서 checkout을 대신해 switchrestore가 도입되었습니다.

checkout을 통해 브랜치를 이동하여 사용할 수 있습니다. 호텔 체크아웃을 생각하셔서 브랜치를 떠난다고 생각하면 안됩니다. 사용할 브랜치를 지정하는 것이 checkout입니다. checkout을 사용해 Gary 브랜치로 이동합니다.

$ git checkout Gary
  • Gary 브랜치에 새로운 내용을 추가하고 커밋을 합니다.
$ git add .
$ git commit -m "새로운 내용 추가"
  • 아니 push를 하려했는데, 빙키가 pull을 하고 binky 브랜치를 생성하여 커밋을 했네요!?
$ git pull
$ git checkout main
$ git branch binky
$ git checkout binky
$ git commit -m "빙키 1"

git push --set -upstream origin 브랜치이름 : push를 할 때 아래와 같은 애러가 뜬다면 명령어를 그대로 입력해주세요.

git log --all --decorate --oneline --graph 명령어를 사용하면 모든 컴밋을 그래프로 볼 수 있습니다.

git push vs git push <원격저장소명> <브랜치명>
git push origin main일까요? 그냥 git push하면 안되나요? 라고 생각하실 수도 있습니다.

git push <원격저장소명> <브랜치명> 는 어느 원격 저장소의 어느 브랜치에 push할 지 전달합니다.

git push 는 할 때에는 이미 연결된 곳에 push할 수 있지만, 원격 저장소에 해당 브랜치가 없는 경우에는 git push -u origin <브랜치명> 을 실행해주셔야 이후에 간단히 push할 수 있습니다. -u 옵션이 --set -upstream 입니다.

  • 여기서 origin은 키워드가 아닙니다. one, two등에 이름으로 할 수 있어요. 이는 여러 원격 저장소를 연결할 수 있기 때문입니다.
  • 위 내용에 이어 main이 어느 원격 저장소(GitHub인지 GitLab인지 또는 그 외인지)의 main인지 알 수 없기 때문에 설정해주는 설정입니다.

합병하기

git merge : 두 branch로 나누어 작업했던 것을 병합합니다.

$ git checkout main
$ git merge binky
  • merge가 완료되었으면 push까지 해줘야 원격 저장소에 반영됩니다.
$ git push origin main

+결과

  • binky 브랜치를 merge한 후에 gary의 브랜치를 merge해 보도록 하겠습니다. 만약, 두 브랜치가 같은 곳을 수정했다면 충돌이 일어나지만 지금은 다른 곳을 수정했다는 가정하에 진행하도록 하겠습니다.
$ git merge Gary
$ git push origin main

+결과

profile
wanna be BE-Developer

0개의 댓글