책 읽다가 코딩하다 죽을래

git (깃), github(깃허브)에 대해 제대로 배워보는 강의 4장 Branch따는 법 및 PR 본문

코딩/Git,GitHub

git (깃), github(깃허브)에 대해 제대로 배워보는 강의 4장 Branch따는 법 및 PR

ABlue 2021. 9. 23. 19:03

 

🧾 이 강의는 시리즈 별로 되어있습니다.

 

git (깃), github(깃허브)에 대해 제대로 배워보는 강의 0장 Git과 GUI,CLI[클릭]

git (깃), github(깃허브)에 대해 제대로 배워보는 강의 1장 Git 설치법[클릭]

git (깃), github(깃허브)에 대해 제대로 배워보는 강의 2장 Git 구조와 사용법[클릭]

git (깃), github(깃허브)에 대해 제대로 배워보는 강의 3장 GitHub[클릭]

📖 Branch란?

 

Git을 통해 예전 코드들로 왔다 갔다 할 수 있는 기능을 타임머신에 비유할 수 있다면

Branch는 평행우주라고 비유될 수 있습니다.

 

Branch의 뜻은 나뭇가지입니다.

Git에서 사용되는 의미는 '구분된 작업 공간'을 의미하며

기존의 이력들은 유지된 채로 새로운 기능을 펼치고 싶을 때 사용되는 기능입니다.

 

 

📖 Branch의 사용목적

 

 

Branch의 사용목적을 예를 들어보자면 위와 같이 모 사이트의 메인 페이지 개발이 끝난 후

 이제 로그인 기능과 자유게시판 기능을 넣어야 하는데 작업하는 개발자가 2명이라면

한 명은 로그인, 한 명은 자유게시판 기능을 구현해야 하는데 하나의 작업공간에서 동시에 개발한다면

나중에 수많은 충돌과 이력 관리가 많이 꼬여질 것입니다.

 

 

그래서 현재 브랜치의 이력을 갖고 있는 상태로 두 개의 작업공간 분리시켜

각자 개발하도록 만드는 것이 Branch입니다.

 

 

📖 Branch 사용방법

 

 

Branch을 만드는 명령어는 git branch 브랜치 이름이며

이렇게 생성된 브랜치는 현재 있는 브랜치의 이력들을 복사가 됩니다.

 

 

 

Branch 생성과 함께 checkout하고 싶다면 git checkout -b 브랜치 이름 명령어를 써도 됩니다.

 

 


 

 

먼저 board Branch의 게시판 구현을 구현하고 add commit을 했습니다.

 그다음 login Branch checkout하면

 

 

login Branch에는 board Branch의 이력들이 있지 않습니다.

두 개의 Branch는 독립적이다 라는 뜻입니다.

 

 

  GUI로 보면 이렇게 master Branch에서 두 가지의 Branch가 나온다는 걸 알 수 있습니다.

이 브랜치를 다시 master브랜치로 붙이려면 merge Pull Request가 있는데 

이 둘의 차이는 merge는 말 그대로 바로 병합해주는 것이고 Pull Request는 다른 개발자들에게 변경 이력들의 대한 의견을 물은 후 merge 해주는 것입니다.

 

혼자 개발을 하는 거라면 병합할 때 merge를 하고

여러 명이서 협업을 하는 거라면 병합할 때 Pull Request를 통해 merge 해야 합니다.

 

📖 Pull Request 사용방법

 

 

Pull Request 실습을 위해 login, board를 원격 저장소로 push를 했습니다.

 

브랜치로 나눈 후에 push를 해주면 GitHub가 알아서 compare & pull request 할 건지를 물어봐줍니다.

 

너 branch 새로 만들어서 push 해줬네?

그럼 기존 branch랑 뭐가 달라졌는지 확인해야겠네

 

이렇게 GitHub가 미리 물어보는 것입니다.

 

저 compare & pull request를 통해 Pull Request를 진행해도 됩니다.

하지만 정석적으로 배워봅시다

 

 

상단에서 Pull Request메뉴를 고른 후 New pull request 버튼을 누릅니다.

 

 

그럼 위의 base branch compare branch를 확인해봅시다

base branch가 기준이다. base branch에서 compare branch를 서로 비교해 달라졌는지를 화면에 띄워줍니다.

지금은 base branch compare branch가 모두 master branch이니 달라져있는 게 없다고 하는 것입니다.

 

 

compare branch를 달리해주면 상단에 달라진 점과 merge가 가능한지의 여부를 알려줍니다.

merge가 가능할 때는 Fast-forward가 가능할 때입니다.

한마디로 base branch  compare branch가 덧붙여지는 게 가능한지입니다.

서로의 브랜치가 충돌 현상이 일어나 병합이 불가능하면 병합이 해결한 후 merge를 해줘야 합니다.

 

merge가 가능하니 create pull request를 눌러줍시다.

 

 

 자신이 만든 기능이 무엇인지 간략 요약한 제목을 설정하고

내용에는 상세히 적어주고 create pull request를 눌러줍시다.

 

 

그럼 이렇게 다른 사람들에게 자신이 변경한 이력을 공손하게 물어보듯이 메시지가 남겨지게 됩니다.

그러면 다른 개발자들이 댓글창을 통해 의견을 남기거나 

 

 

코드 확인 메뉴에 들어가서 직접 코드 밑에 의견을 남길 수 있습니다. 

그리고 프로젝트 관리자나 혹은 기능을 만든 자신이 Merge pull request를 하면 master branch에 붙여지는 것입니다.

 

이번엔 board branch를 Pull Request해봅시다.

 

 

 

안타깝게도 board branch가 병합이 안된다고 합니다.

Fast-forward가 안되므로 충돌을 해결해줘야 합니다..

그럼 로컬에서 병합을 해결하고 Pull Request 하는 방법도 있지만

Create Pull Request 버튼을 누른 후 

 

 Resolve conflicts에서 원격에서 고치는 방법도 있다.

 

 

들어가면 우리가 로컬에서 Merge 할 때 많이 봤던 것들이 보입니다.

 

 

맞게 고쳐지면  오른쪽 상단에 Commit merge를 누르고

 

 

Merge pull request를 누르면 login branch와 master branch가 병합이 되는 것입니다.

 

 

 

우리가 여태까지 한 것을 그림으로 정리하자면은 이렇습니다.

 

 

지금까지 우리는 Branch 및 Pull Request를 통해 다른 사람들과 같이 협업하는 방식을 간단하게 공부해보았습니다.

 

 

위의 사진을 통해 더 많은 명령어를 공부하여 자유자재로 git을 사용해봅시다.

[Git] 과거의 커밋으로 돌아가는 reset 알아보기(GUI ver)[클릭]

[Git] 커밋을 수정하는 revert 알아보기(GUI ver)[클릭]