Git의 기본 개념들 (2) (branch, merge, pull request, fork, fetch, pull)

Jane·2020년 12월 21일
9
post-thumbnail

Branch

브랜치 = 포인터
→ 브랜치는 포인터이기 때문에 새로운 브랜치를 만들 때 SVN과 같이 프로젝트를 복사할 필요 없이 커밋을 가리키기만 하면 된다!
branch 연습하기 좋은 사이트

  • 브랜치 혹은 커밋을 가리키는 포인터
  • HEAD를 이용하면 브랜치 사이를 넘나들 수 있다.
  • 최신 커밋이 아닌 과거 커밋으로도 이동시킬 수 있는데, 과거 커밋으로 이동하면 브랜치의 포인터와 HEAD가 떨어져있기 때문에 Detached HEAD가 된다.

Merge

Fast-forward

master branch에서 branch가 나눠진 이후, master branch의 상태가 변경되지 않았다면 master branch가 병합을 원하는 branch의 최신 커밋을 가리키게 함으로써 Fast-forward merge를 할 수 있다.

Merge commit

충돌이 없다면 바로 merge되고, 충돌이 있다면 Visual Studio Code를 활용하여 수동으로 충돌을 해결해주거나 P4 merge tool을 활용하면 된다.

Tip! 충돌 가능성이 있을 땐 작업하고 있는 branch에 먼저 merge를 해보고 이상이 없으면 master branch로 merge하는 것이 좋다.


Pull Request

협력자에게 브랜치 병합을 요청하는 메시지를 보내는 것

  1. 원본 저장소를 수정할 권한이 있는 경우(Collaborator로 등록되어 있는 경우) 동일한 repository 안에서 branch를 이용하여 master branch로의 병합을 요청하는 PR을 보내면 된다.

base : 병합된 commit이 올라갈 기준이 되는 branch
compare : 병합의 대상이 될, base branch에 반영시키고 싶은 branch

Tip 1 Pull Request 내용에는 기능 스크린샷이나 테스트 방법 등 동료 개발자가 코드를 이해하는 데 도움이 되는 설명을 적어주면 된다.
Tip 2 Labels에는 [버그], [리뷰 필요], [백엔드] 등을 적어주면 된다.

  1. 저장소에 push할 권한이 없는 경우 원본 저장소를 fork하여 생성한 원격 저장소에 커밋을 올린 후 원본 저장소의 소유자에게 PR을 보내면 된다.
branchfork
의의하나의 원본 저장소에서 분기를 나눈다.여러 원격 저장소를 만들어 분기를 나눈다.
장점하나의 원본 저장소에서 코드 커밋 이력을 볼 수 있다.원본 저장소에 영향을 미치지 않으므로 원격 저장소에서 마음껏 코드를 수정할 수 있다.
단점다수의 사용자가 다수의 브랜치를 만들면 관리하기 힘들다.원본 저장소의 이력을 보려면 따로 주소를 추가해야 한다.

Fetch & Pull

변경 사항을 업데이트
※ pull은 실제 코드를 내려받지만 fetch는 그래프만 업데이트 한다.

fetch

fetch를 실행하면 `origin/master`가 새로 만들어진 병합커밋인 "Merge pull request #1"을 가리키도록 그래프가 업데이트 된다.

pull (fetch + merge)

pull을 실행하면 `master` 또한 `origin/master`와 동일하게 "Merge pull request #1"을 가리킨다.

Source

9개의 댓글

comment-user-thumbnail
2020년 12월 23일

너무 깔끔해요 👍

1개의 답글
comment-user-thumbnail
2021년 1월 3일

매번 표지 넣어 주셔서 감사합니다! :+1:

2개의 답글
comment-user-thumbnail
2021년 1월 9일

역시 지선님은 콘텐츠 하나에도 유용한 정보가 깔끔하게 다 담겨있어요!! 저 맨날 깃에서 헤매는데 지선님 덕분에 꿀팁 알아가요!! ㅎㅎ 🤗😘👍🏻

1개의 답글
comment-user-thumbnail
2021년 1월 10일

헷갈리는 부분 많았는데 정말 도움 많이되네요!! 좋은 정보 감사합니다!!ㅎㅎ

1개의 답글