GIT TIL 04

Nabang Kim·2021년 9월 14일
0

Git

목록 보기
4/4
post-thumbnail

2021년 9월 14일에 작성된 문서 2번 입니다.
git 배운 내용을 정리했습니다.



프로젝트 workflow

1. Fork, clone

Remote에 생성한 프로젝트 Repository를 각자의 Repository로 가져오기

  1. 프로젝트 Remote Repository 만들기.
  2. 팀원들과 함께 나누어 작업을 하기 위해서 각자의 Remote Repository로 Fork.
  3. Local에서 작업하기 위해서 git clone 명령어로 Repository를 Local에 가지고 왔다.



2. git checkout -b 새로운 브랜치 이름 / git switch -c 새로운 브랜치 이름

브랜치를 생성하고 생성한 브랜치로 이동

  • 개발 과정에서는 main 브랜치가 아닌 dev 브랜치를 하나 만들어서 작업을 하는 경우가 많다.

dev 브랜치를 만들어서 해당 브랜치로 이동해 보겠습니다.
여기서 HEAD는 현재 위치의 커밋을 가리킵니다.
현재 작업중인 커밋입니다.


  • git checkout -b dev 통해서 dev 브랜치를 생성.
    • git switch -c dev 도 가능.
  • Remote Repository 에도 생성한 브랜치를 반영하기 위해서는 git push origin dev 를 입력.



3. git branch

생성한 브랜치의 목록 및 현재 위치한 브랜치 확인

브랜치가 잘 생성되었는지 확인하고 싶어요.
생성한 브랜치의 목록과 내가 현재 dev 브랜치에 있는 것이 맞는지 확인해 볼 방법은 없을까요?

  • git branch 명령어를 통해 확인할 수 있다.
  • 터미널 창에 git branch 를 입력하면 아래 화면이 뜬다.

  • 알파벳 q 를 눌러서 종료할 수 있다.



4. git checkout -b 새로운 브랜치 이름 / git switch -c 새로운 브랜치 이름

브랜치를 생성하고 생성한 브랜치로 이동

회의를 통해 하나의 기능을 구현할 때는 feature/기능이름 브랜치를 만들어서 작업하기로 정했습니다.
로그인 기능을 구현하기 위해서 feature/login 브랜치를 생성해보도록 하겠습니다.


  • git checkout -b feature/login 를 입력.
    • git switch -c feature/login 도 같은 기능.



5. git checkout -b 새로운 브랜치 이름 / git switch -c 새로운 브랜치 이름

브랜치를 생성하고 생성한 브랜치로 이동

feature/login 브랜치에서 로그인 기능이 완성되었습니다! 여기에 소셜 로그인(oauth) 기능을 추가해 보고 싶어요. 그런데 로그인 코드를 건드리자니 위험 부담이 있네요. 새로운 브랜치를 하나 더 만들어서 작업하고 싶습니다. feature/login-oauth 라는 이름으로 feature/login 브랜치에서 파생된 브랜치를 하나 더 만들어서 작업해 보겠습니다.


  • git checkout -b feature/login-oauth 를 입력.
    • git switch -c feature/login-oauth 명령어도 같은 기능.



6. git checkout -b 새로운 브랜치 이름 / git switch -c 새로운 브랜치 이름

브랜치를 생성하고 생성한 브랜치로 이동

소셜 로그인 기능까지 구현이 완료되었습니다. 이 feature/login-oauth에 있는 코드를 feature/login 브랜치로 병합(merge) 할 수 있는 방법이 있을까요? 먼저 git checkout(switch) feature/login 명령어를 통해 feature/login 브랜치로 이동하세요.



  • git checkout -b feature/login 를 입력.
  • merge하기 위해서는 먼저 병합이 될 브랜치로 이동을 해야 한다.
    • feature/login-oauth 브랜치를 feature/login 브랜치로 병합하기 위해서는 feature/login 브랜치로 이동.
    • git switch feature/login도 같은 기능.



7-1. git merge 병합할 브랜치 이름

브랜치 병합하기

  • feature/login-oauth 내용을 feature/login 브랜치로 병합
    • 현재 위치가 feature/login
      • git merge feature/login-oauth 입력.
  • feature/login-oauth 머지 전 feature/login에 추가 커밋이 없어, 브랜치가 분기될 필요가 없다.
    • 자동적으로 fast-forward 방식으로 병합이 이뤄진다.
      • fast-forward : 별도의 커밋을 생성하지 않고 feature/login 브랜치가 가리키는 커밋을 feature/login-oauth 가 생성한 커밋으로 바꾸는 작업



7-2. git merge 병합할 브랜치 이름

만일, feature/login 브랜치에 별도의 커밋이 있었다면?

  • merge commit 방식으로 병합되었을 것.
    • 각 브랜치가 줄기처럼 분기한 후, 병합의 모양새를 가짐.



  • git merge feature/login-oauth 입력
  • 해당 브랜치를 현재 위치한 브랜치로 병합(merge).



merge와 rebase의 차이점

  • merge
    • 변경 내용의 이력이 모두 그대로 남아 있어 이력이 복잡해 짐.
  • rebase
    • 말 그대로 branch base를 이동
    • rebase의 원리 = fast-forward.
    • 머지처럼 브랜치 통합을 목적
    • 특정 시점으로 브랜치가 가리키는 곳을 변경하는 기능.

feature/login 에서 git rebase main feature/login 명령어를 입력하면 main의 가장 최신 커밋으로 브랜치가 가리키는 곳이 변경됩니다. (main의 다른 커밋에서 충돌이 없을 경우)



8. git push origin 브랜치 이름

Remote Repository로 업로드하기

  • 로컬 작업 내용을 Remote Repository 에 업로드하기 위해서는 push

  • git push origin feature/login 입력
  • 해당 브랜치를 Remote Repository로 업로드.



9. Pull Request

내가 push한 변경사항에 대해서 다른 사람들에게 알리는 것

feature/login의 변경 사항을 다른 팀원들과 함께 코드 리뷰를 하고 dev 브랜치에 적용하고 싶습니다.

  • Github의 Pull Request 기능을 활용해 dev 브랜치로의 반영을 요청.
  • 리뷰가 끝난 코드는 브라우저에서도 dev 브랜치로 merge 할 수 있다.

  • 간단하게 PR 내용을 입력한 후 Create pull request 버튼을 클릭.



전체적인 흐름 그림 (아래 참조)







Written with StackEdit.

0개의 댓글

관련 채용 정보