git rebase, conflict 수정, 브렌치명 등 관련

msung99·2022년 7월 19일
0
post-thumbnail

브랜치 개념

  • main 브랜치에서 어려명이 동시에 작업을 진행하면 꼬인다.
    따라서 각각의 개발자는 따로 자신만의 기능별 브랜치를 생성한다.

  • main 브랜치에 직접적으로 작업을 하지말고, 각자 새로운 브렌치를 파고 작업을 한후에 나중에 PR 을 올려서 main 에다 merge 를 시킨다.

  1. 위처럼 main 브렌치에 커밋을 생성했을 때, 여기서 개발자는 따로 브랜치를 생성해서 작업을 위처럼 진행하면서, 자신만의 브랜치 안에서 커밋을 계속 생성하고 작업을 진행할 수있다.
  1. 각 브랜치에서 진행한 커밋 및 작업을 한 내용을 원격(origin)에다 PR 을 올린다.
    그러고 PR 을 merge 하면 main 브랜치에 아래 그림처럼 각 브랜치에서 진행한 커밋 & 작업 내용이 반영이 된다.

  1. 또 개발자 A 가 지금껏 작업한 내용을 PR 을 올려서 Merge 가 main 브렌치에 이루어졌을텐데,
    개발자 B 도 자신만의 브랜치를 생성후 로컬에서 작업을 하다가 PR 을 올리고 Merge 를 한다면 아래와 같을 것이다.


브랜치 명령어 + PR + Merge 하는 과정에서 필요한 명령어

브랜치 생성 및 바꾸기 : git checkout -b feature/accounts_login

  • 버전 생성시 : angular js 커밋 메시지 규약에 따라서

    • git commit -m "docs: new feature_2" 와 같이 작성하는 것이 좋다!
  • push 할때

  • git push origin main : 원격(= origin = 깃허브) 중에서 main 브랜치에다 push 하는것

    (* main에 push 하지말자!)

  • git push origin feature/accounts_login : 원격(= origin = 깃허브) 중에서feature/accounts_login 브랜치에 push 하는것

  • push 을 하면 원격(origin = 깃허브) 에는 우리가 생성한 브랜치가 push 되었지만, main 브랜치에 아직 PR 및 merge 가 되지 않아서 브랜치의 내용을 PR 을 날려줘야 한다.

  • 위 처럼 PR 을 날릴것인지 말건지에 대한 문구가 뜨면 클릭해서 PR 을 작성하면 된다.

  • 클릭시 위처럼 뜨는데, 위의 4개에 적힌게 뭐나면 순서대로
  1. base 레포지토리
  2. base 브랜치 ( = 병합을 할 브랜치. 즉 base 브랜치는 대부분 프로젝트에서 곧 main 브랜치가 될것이다. )
  3. 개발자(우리)의 레포지토리
  4. 개발자의 브랜치 ( = base 브랜치에다 merge를 하고싶은 우리의 브랜치 )

이다.


rebase 에 필요한 개념 + 명령어

  • origin 이란?

  • git remote add upstream "등록할 원격 저장소 주소"

    • fork 를 했을때 기존 원격 저장소를 추가하는 과정이 필요함
      => 명령어 : git remote add upstream "https:~~"
      => 지정해준 주소를 upstream 이라는 별명으로 원격 저장소를 등록하겠다는 뜻

아래처럼 git remote -v 명령어로 원격 저장소를 확인해보면,
우리가 fork 한 원격 저장소에는 별명이 origin 으로 그대로 유지되고있고,
fork 를 받은 기존의 원격 저장소에는 별명이 upstream 으로 새롭게 붙은 것을 볼 수 있다!

  • upstream 을 왜 등록했나면, rebase 을 꾸준히 해주기 위해서다!
  • git fetch upstream main

    • upstream 원격 저장소에 대한 정보들( upstream 저장소에 진행한 여러 커밋 내용들) 중에서 main 브랜치에 있는 것만 가져온다는 뜻
  • rebase : 시작점을 원격 저장소와 일치시키는 것

  • git rebase 원격저장소별명/main

    • ex) git rebase upstream/main
      => 로컬에 있는 git 저장소와 upstream 원격 저장소가 동기화과 된 것이다!
Pr 머지전에 git fetch upstream main 하신다음에

작업 브랜치에서 git rebase upstream/main

git push origin main -f 해주셔야합니다

rebase, 충돌발생시 수정방법, 브렌치명

https://velog.io/@gygy/Gitrebase

위 블로거님이 너무너무 글을 잘 정리해놓으셔서 링크를 남긴다...
진짜 이해 잘 된듯!


브렌치명

  • kebab-case 로 작성할것

충돌 최대한 줄이기

  1. PR 후 merge를 하기전에 git fetch upstream main
  2. 작업 브렌치에서 git rebase upstream/main
  3. git push origin main -f
  • 이렇게 해야 서로 싱크를 맞추면서 충돌을 최대한 줄일 수 있다.
  • rebase 는 타인의 PR 이 main 에 merge 될때마다 해줘야 충돌이 적어진다.

출처

profile
블로그 이전했습니다 🙂 : https://haon.blog

0개의 댓글