GitHub를 이용한 버전관리 더 알아보기
반갑습니다!
저번 시간에 Git과 GitHub를 이용한 협업을 위해서 5가지의 주요 개념을 알아보았습니다 ^^!
이번에는 협업과 버전관리에 대해 조금 더 심화해서 알아보겠습니다!
1. 풀 리퀘스트(Pull Request)
저번 포스트를 통해서 각 작업자들이 동일한 원격 리포지토리에 대해서
main 브랜치에 대해서 push 등의 작업을 바로 건드리는 것이 아니라
각 개발자들이 자신의 브랜치를 만들어서 코드를 개발하고 테스트하는 과정을 거친다고 말씀드렸었습니다 ^^!!
근데, 본인 스스로는 개발할 때 디버깅도 철저히 하고 아무 문제 없었고
나만 작업을 다 했다고 그냥 merge해도 될까요?
협업이란건 업무만 분담하는 것이 아니라, 서로 의논하고 공동의 목표를 이루기 위해
더 발전하는 과정이라고 생각합니다 ^^
작업이 끝난 결과물인 "코드"에 대해서 팀원들과 함께 코드 리뷰도 해보고
더 효율적인 코드에 대해서 고민해보는 시간도 꽤 중요한 시간이라고 생각합니다 ^^
서로에 대한 신뢰를 증진시킬 수 있는 부분이기도 하구요^^!
해서, 풀 리퀘스트(Pull Request)라는 것이 있습니다
본인의 브랜치를 만들어 작업을 하고 push 한 상태에서 pull request를 생성할 수 있는데요!
이 풀 리퀘스트를 생성하면 다른 팀원들에게 공개가 되기 때문에
팀원들이 리뷰어로서 열람할 수 있고,
branch ruleset에 따라서 merging을 위해 필요한 required approval의 수를 지정할 수도 있습니다 ^^!
다른 팀원들이 리뷰어로 해당 작업물을 열람하고 괜찮다 싶으면 approval(승인)을 남기면 됩니다^^
collaborator들로부터 지정된 수 이상의 approval을 얻으면 main 브랜치에 병합할 수 있는 것이죠!
Git의 이러한 기능 덕분에 일종의 안전·보안 절차이자,
서로 피드백 해주는 리뷰 문화 형성의 장이 형성 된다고 할 수 있겠네요 ^^
2. 병합의 종류(kind of Merge)
똑같은 merge 명령이라도 경우에 따라서 세 가지 케이스가 발생할 수 있는데요!
①Merge commit(병합 커밋)
②Fast-forward(빨리 감기)
③Conflict(충돌)
이 되겠습니다 ^^
3. 포크(Fork)
혹시 오픈소스 라이브러리, 오픈소스 프레임워크라는 말을 들어본 적 있으신가요?
이 오픈 소스라는 것들은 소스 즉, 코드가 다 공개되어 있다는 뜻인데요
개발자들이 별도의 보수를 바라지 않고, 자신의 시간을 들여서
해당 라이브러리 또는 소프트웨어, 프레임워크 등의 코드를 분석하여 오류를 수정하거나
어떤 기능을 개발하여 기여(contribute)할 수 있는데요 ^^!
오픈소스를 분석하고, 해당 코드에 기여하는 것이 프로그래밍 실력을 증진하는 데에 참 좋다고 합니다 ^^
이럴 때 Fork라는 것을 하는데요
fork는 다른 계정의 원격 저장소를 내 계정으로 가지고 올 때 사용합니다 ^^!
Clone과의 차이점이라 할 것 같으면, git 이력이 없습니다!
.git 파일을 가져오지 않는다는 뜻이고, 버전 관리가 없는 새로운 프로젝트를 가져온다는 의미이죠 ^^
이렇게 타인 계정의 리포지토리를 내 계정으로 복사해와서 작업한 다음에
본래 계정의 주인에게 pull request를 생성해놓으면,
당사자가 해당 코드를 파악해보고 적용 시킬지 말지 결정을 합니다 ^^
본인의 작업물이 반영된다면 해당 오픈소스 프로젝트의 기여자(Contributor)가 되는 것이고,
이것 또한 개발자로서의 실력 및 스펙 중 하나로 작용하는 것이죠!
위 두 이미지는 유명한 Framework인 Spring boot의 공식 리포지토리 pull request 목록입니다!
첫 번째 이미지의 우측 상단을 보니 New pull request 버튼이 있는 것이 보입니다 ^^
오늘이 7월 8일인데요 26개의 브랜치들이 pull request를 생성되어 있네요
그 중에 승인이 된 것도 있고 승인이 되지 않은 것들도 보입니다
이 각자가 이 공식 리포지토리에서 fork해 가서 작업을 하고 다시 pull request를 생성해
처리를 대기했던 목록인거죠 ^^
이와 같이 GitHub를 이용한 협업 중 앞전 포스트보다 조금 더 심도있는 내용에 대해서 알아보았습니다 ^^
드넓은 개발의 세계를 항해하시는 모든 분들 각자 옆에서 함께하는 팀원 분들과
세찬 풍랑을 헤쳐이기고 더욱 가치를 더하며 행복하셨으면 좋겠습니다 ^^!!
읽어주셔서 감사합니다!