(TIL11) Git

SooHyung Kim·2020년 4월 5일
0

Today I learned

목록 보기
11/25

Git & Github

Git

  • Git은 Linus Torvalds에 의해 고안된 VCS(Version Control System)으로 소스코드의 변경 내역을 관리하는 시스템임

    버전 관리 시스템의 필요성

    • 코드 변경 사항 내역 기록 및 관리
    • 필요시에는 이전 상태로 rollback
    • 팀단위 개발시 체계적이고 효과적인 협업 가능
    • 버전을 관리하기 위해서는 같은 디렉토리 내에 파일을 복사하여 관리를 하면 되나, 실수가 발생할 가능성이 아주 많음(파일명, 착각 등)

    • 이를 해결하기 위해서는 수정된 버전 파일을 같은 공간이 아닌 다른 공간에 저장 후 관리

      • 이러한 변경정보를 따로 저장한 공간을 version database라고 칭함

    • 그러나 이럴 경우, 다른 개발자와의 협업을 진행하여 수정사항을 공유하고 관리하기에는 제약이 발생하고 있음

      • Version Database를 서버에 올려놓고 공유하여 문제를 해결하게 되었으며, 이러한 서버를 Central VCS Server라고 함

    • 그러나, 이럴 경우에도 중앙 서버가 다운되면 개발팀 전체가 마비되는 현상이 발생하고, 복구가 되지 않으면 소스코드 전체가 소멸되는 현상이 발생

      • 이에 중앙서버를 분산하는 분산 버전 관리 시스템을 도입하여 중앙 서버에 문제가 발생하도 개발자의 컴퓨터에서 복구 가능한 구조가 나타남

Git Basics

  • Modified : 말 그대로 수정된 File

  • Staged : Commit전 mark해 놓은 상태로, 중간 저장 단계

  • Commited : 수정 사항들이 git에 저장된 상태

Git Commands

  • git init : 프로젝트를 git repositoty(저장소)로 만들기 위해 사용하는 명령어로 해당 디렉토리를 git repo로 만들어야 버전 관리가 시작됨

  • git add : modified된 파일을 staged 상태로 옮기고자 할 때 사용하는 명령어

  • git commit : staged된 파일을 commit하고자 할 때 사용하는 명령어

  • git diff : Modified된 파일에 어떤 수정 사항이 적용되었는지 보고자 할 때 사용하는 명령어

  • git status : 현재 상태를 보여주는 명령어로 파일의 전체적인 상황을 보여줌

  • git log : commit 내역을 보여줌

  • git rm : 원하는 파일을 git repo에서 삭제

  • git branch : Branch를 생성할 때 사용

  • git checkout : 다른 branch로 이동하고자 할 때 사용

Branch & Merge

(출처 : https://gmlwjd9405.github.io/2018/05/11/types-of-git-branch.html)

Branch

  • git에서는 master보다는 branch기반으로 개발을 진행하여 나중에 Merge하는 방법을 권장함

  • 브랜치의 종류

    • Master Branch

      • 배포 이력을 관리하기 위해 사용
    • Develop Branch

      • 기능 개발을 위한 브랜치들을 병합하기 위해 사용하며, 모든 기능이 추가되어 배포 가능한 안정적인 상태가 될 경우 develop 브랜치를 master 브랜치에 merge
    • Feature branch

      • 새로운 기능 개발 및 버그 수저잉 필요할 때마다 'develop' 브랜치로부터 분기하며, feature 브랜치에서의 작업은 보통 개인의 작업이기 때문에 로컬 저장소에서 관리
      • feature 브랜치의 이름 : [feature/기능요약]
        ex) feature/login

    Flow

    1. 'develop' 브랜치에서 새로운 기능에 대한 feature 브랜치 분기
    2. 새로운 기능에 대한 작업 수행
    3. 작업이 끝나면 'develop' 브랜치로 merge
    4. 더 이상 필요하지 않은 feature 브랜치 삭제
    5. 새로운 기능에 대한 'feature' 브랜치를 github에 push

profile
Slow and steady win the race

0개의 댓글