[개발 상식] Git & Github

2018. 8. 24. 13:40Etc/Git

반응형
[개발 상식] Git & Github

[개발 상식] Git & Github

해당 시리즈는 Interview_Question_for_Beginner를 기반으로 추가 학습을 진행해 작성하였습니다.

목차

Git

버전관리 도구로, 오픈소스에 기여하거나 협업을 할 때 쓰임

  • 리눅스 커널 창시자(리누스 토발스)께서 만드심
  • VCS(Version Control System) 중 하나

특징

  • 빠른 속도
  • 단순한 구조
  • 비선형적인 개발 (수천 개의 동시 다발적인 브랜치)
  • 분산 작업 - 원격저장소와 로컬을 분리
  • 데이터 무결성 보장 - 모든 커밋에 대해 Checksum(Hash) 생성

Git 전략

  1. Gitflow
    • 기본 브랜치 5가지 feature > develop > release > hotfix > master 존재
    • branch
      • master : production에서 사용하는 브랜치
      • develop : 개발 중인 코드가 모두 머지 되는 곳
      • feature : 새로운 기능을 추가하는 브랜치, origin에 반영되면 안됨
      • release : 새로운 production 릴리즈를 위한 브랜치
        develop에 개발된 내용을 마지막으로 검토하고 출시하기 위함
        다 되면 master에 머지
      • hotfix : production에서 발생한 버그를 고치는 곳
        수정 끝나면 develop, master, release에 반영
  2. GitHub flow
    • feature, develop 존재 X : 새로운 기능이 있을 경우 master에서 기능이름으로 branch를 딴다.
    • 수시로 push 하고 머지하거나 도움이 필요할 때 pull request를 적극 활용해 리뷰를 받는다.
    • master로 머지가 일어나면 hubot을 이용해 자동으로 배포된다.
  3. GitLab flow
    • Gihub flow가 너무 간단해 여러 이슈를 야기하게 되어, 이를 보안하기 위해 관련 내용들을 추가적으로 덧붙여 설명한 것
    • production 브랜치가 존재해 커밋한 내용들을 일방적으로 디플로이 함.

Github

Git 데이터 온라인 저장소

  • 백업 뿐만 아니라 여러 기능을 통해 공유 및 협업 진행 가능

GitHub Repository에 기여하기

용어 정리

  • 메인 저장소(Main repository)
    내가 기여하고 싶은 오픈소스의 메인 프로젝트 저장소(upstream)
  • 나의 저장소(My github repository)
    메인 저장소를 fork해 나의 계정에 만든 repository (origin)
  • 로컬 저장소(Local git repository)
    나의 컴퓨터상에 생성한 로컬 git repository
  • 작업 공간(workspace)
    나의 컴퓨터상에서 실제 내가 소스를 개발하고 수정하는 workspace

순서

  1. 오픈소스 프로젝트 가져오기
    원하는 오픈소스의 메인 저장소에서 Fork해서 나의 저장소로 복제한다.
  2. 메인 저장소와 동기화 유지
    동시 다발적으로 수정할 경우 생길 conflict를 방지하기 위하여
    1. upstream 이라는 기존 메인 저장소를 가르키는 remote를 생성한다.
    2. origin에 수시로 upstream으로 pull하여 변경 사항을 자신의 코드와 합친다.
    3. push해서 나의 저장소에 변경사항을 업데이트 한다.
  3. 컨트리뷰트 하기
    실제 소스코드의 버그를 수정하거나 기능을 개선하여 오픈소스에 기여하는 일
    • 작업공간에서 수정된 소스코드를 로컬 저장소에 commit 한뒤 나의 저장소에 push
    • pull request 보내기

Reference

반응형