CS 지식/Git & Github

❗️Git & Github Basic(7)

goldpig 2023. 8. 11. 17:54
728x90

브랜치로 협업하기: pull request

예전 글에서 새로운 기능을 추가 하기 위해서는 원본 코드에서 작업을 진행하기 보다는 안전상의 이유로 원본 프로젝트를 복사해서 다른 브랜치에서 작업하는 것이 좋다고 하였습니다. 새로운 브랜치는 터미널에서 명령어를 입력해서 만들 수 있지만 github 사이트에 있는 원격 저장소에서도 만들 수 있습니다.

github 사이트에서 직접 브랜치 생성하기

1. main 브랜치명을 클릭하면 브랜치를 바꾸거나 새로 만들 수 있습니다. 

출처:https://codingapple.com/course-status/

2.  pull request 하기

새로운 브랜치를 만들어서 작업을 한 후 main 즉, 원본과 합쳐야 기능이 완성됩니다. 따라서 터미널에서 git merge 명령어를 한 후 git push 하면 됩니다. 개인적으로 작업을 할 때는 이런식으로 작업하면되는데 회사에서 일을하게 되면 팀단위로 일을 하기 때문에 merge하기 전에 회의하면서 검토하는 경우가 많습니다. 따라서 github.com은 pull request 라는 기능이 있는데, 쉽게 말하면 merge request입니다. 

pull request를 통해 새로운 브랜치를 원본 브랜치에 합칠 수 있고 팀원들끼리 merge전에 검토할 수 있습니다. 

출처:https://codingapple.com/course-status/

위 사진처럼 따라한 후 어떤 브랜치를 어디에 합칠 것인지 정해야합니다. 그 다음 press the Create pull request  button

출처:https://codingapple.com/course-status/

그런 다음 pull request 메뉴에서 commit 내역, 변경 사항등을 볼 수 있고 이런것들을 보고 토론할 수 있습니다. 여기서 코드리뷰도 가능.

출처:https://codingapple.com/course-status/

코드리뷰, 회의 등을 한 후 괜찮다고 판단되면 merge하면 됩니다. 이때 옵션이 여러가지가 있는데 이중 택1하면 됩니다. 

출처:https://codingapple.com/course-status/

예전 글에서도 설명했듯이 merge 방식은 3-way merge, rebase and merge, squash and merge 방식 등이 있다고 했습니다.

1. Creage a merge commit을 하게 되면

  • 새로운 merge commit을 하나 만들어주는 3-way merge 방식으로 실행: main 브랜치 조회시 합쳐진 브랜치의 commit 내역도 전부 나온다. 터미널에서 git log --oneline -graph 해보면 합쳐진 브랜치 그림으로 나옴 따라서 commit내역이 많으면 복잡하고 더러워 보일 수 있다.

출처:https://codingapple.com/course-status/

2. squash and merge을 하게 되면

  • 합쳐질 브랜치의 commit 내역을 하나로 합쳐서 main 브랜치에 신규 commit 생성해준다. 
  • git log --oneline --graph 해보면 합쳐진 브랜치 안나온다. 따라서 commit을 하나로 합쳐서 main 브랜치로 순간이동 시켜주는 행위라 복잡하지 않고 깔끔하게 내역을 확인할 수 있다.

출처:https://codingapple.com/course-status/

3. rebase and merge

  • 합쳐질 브랜치를 main 브랜치 최신 commit으로 rebase하고나서 fast-forword merge 비슷한걸 해준다. 
  • 결과는 squash and merge와 비슷한데 합쳐질 브랜치의 commit 내역이 전부 보존된다.
  • git log --oneline --graph 해보면 합쳐진 브랜치 안나옴.

* 로컬 저장소에서 새로운 브랜치 생성가능

git branch sample
git switch sample
--Switched to branch 'sample'--
git add .
git commit -m "new branch sample"

이런식으로 새로운 브랜치를 만들어서 안전하게 작업을 진행하고 테스트를 진행한 후 괜찮다고 생각되면 다음 명령어를 통해 원격저장소에 백업을 해놓습니다. 

git push 원격저장소주소 로컬브랜치명
git push -u origin sample
  • git push 원격저장소 sample: sample 브랜치 -> 원격저장소에 백업
  • git push 원격저장주소: 모든 로컬 브랜치 -> 원격저장소에 백업

보통은 특정 브랜치를 원격저장소에 올리는 경우가 많습니다.

 

이번시간에서 그래서 github.com 등 원격 저장소에서도 브랜치를 만들 수 있다는 것을 확인할 수 있었습니다. 그리고 pull request (merge)할 때는 3개 중 상황에 맞게 선택해서 사용하면 됩니다.

 

* 원격저장소의 commit 내역을 과거로 되돌리고 싶으면 git reset --hard 명령어 입력하고 git push -f 하면 가능한데 이런 명령어는 개인작업을 할 때 사용하는 것이 좋습니다. 팀 단위로 작업할 때 사용하게 되면 모두에게 영향을 미치기때문에 조심스럽게 사용하거나 사용하지 않는것이 좋습니다. github.com 사이트엔 revert 버튼이 있긴 한데 그거 사용하면 예전 코드로 되돌려 주는 commit을 만들어주는 식으로 동작합니다. 

git reset --hard
git push -f

 

728x90