[Git] 기초

🏃Dekay (JuniorDeveloper)·2021년 9월 7일
0

Git & Github

목록 보기
1/3
post-thumbnail

Git 이란?

버전관리시스템 💾

  • 형상 관리 도구 중 하나로, 대형 프로젝트를 효율적으로 관리할 수 있게 해주는 무료 소프트웨어이다.

  • 여러 명이 branch를 만들어 merge가 가능하기 때문에 동시 다발적으로 병렬 개발이 가능하다.

  • 분산 버전관리이기 대문에 인터넷이 연결되지 않은 곳에서 개발을 진행할 수 있으며, 저장소가 날라가도 다시 원상복구 가능하다.


Git-Flow Workflow

  • Git은 병렬적 브랜치 관리전략을 사용하기 때문에 브랜치를 생성하고 삭제하는 것이 쉽다.

  • 아래의 그림은 Git-Flow Workflow를 시각화한 그림이다.
    (출처: https://expressus.io/diagrams/git-flow-workflow-diagram-template)

  • Master: 처음 생성하면 Master로 생성되는데, Master라는 것은 언제든지 Release가 가능한 상태를 뜻한다. 즉, 수정하고 있는 코드 들은 브랜치를 만들어 작업을 해야한다. ❗❗

  • Hotfix: Master 브랜치에서 파생된 브랜치이다. Master에서 오류, 버그가 발견되었을 때 Master에서 브랜치를 생성한 후, 오류, 버그를 수정한 다음에 다시 Master에 Merge를 한다. 즉, 쉽게 말해 폴더라고 생각하면 된다.

  • Release: Develop 브랜치에서 파생되어 관리를 하고, 향후 Develop 브랜치로 Merge 한다.

  • Develop: 실제로 개발을 하는 브랜치로, 대부분 작업 과정은 Develop에서 바로 Master로 가지 않고 Release를 거쳐서 Master로 Merge한다.

  • Feature: 부수적인 기능, 새로운 기능을 추가할 때 개발하는 브랜치로, 개발이 끝나면 Develop에 Merge 된다. 그런데, Feature 브랜치는 하나의 브랜치가 아닌 폴더의 형태다.
    Why? 협업하는 경우는 여러 사람이 여러 기능을 개발할 경우도 있기 때문이다.


동작 원리✔

  • 스냅샷(SnapShot)

    • 코드를 저장할 때마다 그 시점 코드의 스냅샷을 저장한다.
    • 즉, 파일 자체를 저장하는것 보다 실제 프로젝트를 커밋하여 적용하는 순간이 중요하기 때문에 그 수정 내역 자체를 저장한다.
    • 변경되지 않은 파일은 저장하지 않고 이전에 저정한 동일한 파일을 링크로 걸어둠 (링크정보만 저장하기 때문에 용량이 작다)
  • 체크섬(Checksum)

    • 데이터를 저장하기 전 *체크섬을 구해서 데이터를 관리한다.
      *체크섬: 중복검사의 형태로 순환중복검사를 뜻함.
    • *SHA-1 해시 사용
      *SHA-1 해시: 16진수 문자 40개로 구성된 문자열 (파일의 내용 또는 디렉토리 구조를 기반으로 계산한다)
    • 파일이름 대신 컨텐츠의 해시 값을 저장 (파일명이 변경되어도 내용이 동일하면 같은 해시를 갖는다)
  • Section

    • Working directory: clon을 하게 되면 working directory가 생성된다. 즉, 내 컴퓨터에 작업할 파일이 있는 디렉토리
    • Staging area: local 저장소 같은 느낌으로, 커밋(Commit)을 수행할 파일들이 올라가는 영역이다. 즉, Staging area에는 생성된 저장소(Repository)와 관리하고 있는 파일들의 목록이 있음
      Working directory에서 파일을 생성하고 등록하게 되면 Staging area에 추가되지만, 여기에 추가가 된다고 해도 저장소(Repository)에는 변경사항이 저장 되지 않음.

오늘 git을 처음 살펴보았는데 왜 많은 사람들이 git! git! 하는지 알게됐다.. 왜 이렇게 편한걸 우리 연구실에서는 사용하지 않았을까??😒 서로 버전도 다르고 코드 스타일도 달라서 코드를 합칠때 엄청 고생했던 기억이 떠올랐다..😢 그때 git을 쓰고 있었다면 어땠을까??ㅠㅠ 지금부터라도 나중에 팀원들과 협업할 때 그리고 나를 위해서 git을 습관화 하도록 공부 열심히 해야겠다.❗❗

end

profile
Believe you can & you're half way there 🙏

0개의 댓글