[Git] 1장 깃과 버전관리

참조

버전이란?

  • 버전은 이전과 약간씩 다른 변화들을 구분하는 표시입니다.
  • 버전과 버전 사이에 변화된 것을 서브버전 이라고 합니다.

버전 관리 시스템

  • 버전 관리 시스템이 없을땐, 파일이름1 ,파일이름2 처럼 파일 이름을 다르게 저장하면서 관리를 했습니다.
  • 하지만 그렇게 관리하게 되면 시간이 흘러 누가 어떤내용을 수정했는지 파악이 되지 않습니다.
  • 이럴때 보다 편리하고 정확하게 관리해주는 소프트웨어를 버전 관리 시스템 이라고 합니다.

버전 관리 소프트웨어

  • 코드와 콘텐츠의 변화를 관리하고 추적하는 소프트웨어를 버전 관리 시스템(VCS, Version Control System) 이라고 합니다.
  • 현재 사용하는 VCS는 크게 집중형과 분산형, 두 종류로 구분할 수 있습니다.
  • 집중형 시스템은 말 그대로 모든 소스 코드가 한곳에 집중되어 있는 형태입니다.
  • 하나의 메인 중앙 서버에서 개발 구성원의 모든 소스 코드를 통합적으로 관리합니다.
  • 클라이언트-서버 모델이라고 합니다.

집중형 장점

  • 저장소 하나를 중심으로 관리하기 때문에 시스템을 운영하기 수월합니다.

집중형 단점

  • 중앙 저장 공간인 서버에 문제가 생기면, 소스 코드가 있는 메인 저장소에 모든 개발자가 접근할 수 없는 심각한 상황이 발생할 수 있습니다.
  • 동시에 여러 개발자가 접근하면 충돌이 발생하기에 코드 수정을 안정적으로 할 수 있게 잠금 모델을 적용합니다.
  • 파일을 변경하려면 개발자들은 순서대로 대기하고 있어야 합니다.

잠금모델 이란?

  • 보통 다수의 클라이언트가 서버에 동시 접속하곤 합니다.
  • 파일 하나를 다수의 사용자가 동시에 접근하여 수정하려고 한다면 충돌이 발생합니다.
  • 누군가 먼저 파일을 수정하고 있다면 다른 사용자는 수정을 못하도록 잠금을 설정하여 방지할 수 있습니다.

깃이란

  • 깃은 2005년 리눅스 개발자인 리누스 베네딕트 토르발스가 개발했습니다.
  • 깃의 모든 소스는 깃허브에 공개되어 있으며, 깃허브에서 git으로 검색하면 됩니다.
  • https://github.com/git/git

백업 기능

  • 분산형 깃은 자신의 로컬 컴퓨터에서 독립적으로 소스의 버전 관리를 할 수 있습니다.
  • 독립적이란 것은 로컬 컴퓨터에서 자체적으로 버전을 기록하고 관리할 수 있는 시스템을 의미합니다.
  • 깃을 사용하면 코드를 원격 저장소에 저장할 수 있습니다.
  • 또 로컬 컴퓨터의 저장소를 동기화하여 원격 저장소에 백업합니다.

협업 개발

  • 깃은 다수의 개발자와 코드를 공유하고 협업할 때 매우 유용합니다.
  • 깃을 사용하면 네트워크를 통해 코드를 좀 더 쉽게 공유할 수 있습니다. 심지어 인터넷이 연결되지 않은 상태에서도 코드 이력을 관리하고, 다른 개발자와 공유하여 협업할 수 있습니다.
  • 깃은 변겨된 모든 이력을 저장합니다. 누가 언제 어떤 파일을 수정했는지 기록하기 때문에 코드를 좀 더 책임감 있게 작성하고 유지할 수 있습니다.
  • 깃은 원격 공유 가 가능합니다.
  • 분산된 여러 저장소 간에 정보를 주고 받으려면 중앙 서버가 필요합니다. 깃에서는 원격 저장소가 중앙 서버 역할을 합니다.
  • 깃을 사용하면 개발 구성원 간에 소스 코드를 쉽게 주고받을 수 있습니다.
  • 원격 저장소로 전송된 코드는 여러 개발자와 소스 코드를 공유합니다. 협업하여 코드를 개발할 때 공유 기능은 매우 중요합니다.

깃의 동작 한눈에 보기

  • 초기화 : 폴더를 깃 저장소로 변경합니다.
  • 커밋 : 변경된 코드의 이력을 기록합니다.
  • 브랜치 : 분리 격리된 코드 이력을 기록합니다.
  • 병합 : 기존 이력과 분리된 이력을 통합합니다.
  • 푸시 : 로컬 저장소의 이력을 서버로 전송 및 공유합니다.

정리

  • 깃은 다양한 알고리즘과 기술로 무장하고 있습니다.
  • 많은 프로젝트를 깃으로 관리하면서 안정성과 가치를 인정받고 있습니다.
  • 깃을 잘 활용하려면 깃의 개념을 이해하고 많이 사용해 보아야 합니다.
728x90

'버전관리' 카테고리의 다른 글

[Git] 3장 깃 개념 잡기  (0) 2022.06.18
[Git] 2장 깃과 소스트리 설치 및 환경 설정  (0) 2022.06.18
Git - stash  (0) 2021.05.06
마크다운 (markdown) 작성 하는 방법  (0) 2021.05.05
Git - Pull & Push  (0) 2021.05.05

이 글을 공유하기

댓글

Designed by JB FACTORY