Git이란?
Git은 컴퓨터 파일의 변경사항을 추적하고 여려 명의 사용자들 간에 해당 파일들의 작업을 조율하기 위한 분산 버전 관리 시스템입니다. 소프트웨어 개발에서 소스 코드 관리에 주로 사용되지만 어떠한 집합의 파일의 변경사항을 지속적으로 추적하기 위해 사용될 수 있습니다. 기하학적 불변 이론을 바탕으로 설계됐고, 분산 버전 관리 시스템으로서 빠른 수행 속도에 중점을 두고 있는 것이 특징이며 데이터 무결성, 분산, 비선형 워크플로를 지원합니다.
Git은 현재 가장 널리 쓰이는 분산형 버전 컨트롤 프로그램(Distributed Version Control System, DVCS)중 하나이다. 저장소에서 프로젝트를 꺼내오면 내 컴퓨터에 저장소가 만들어지고 모든 변경 이력이 저장된다. 그리고 여러 곳의 원격 저장소를 등록하여 사용할 수 있다. 커밋은 우선적으로 로컬 저장소에 기록되며, 원격 저장소에 저장하려면 푸쉬(Push) 작업을 수행하면 된다. 원격 저장소의 변경사항을 내 로컬 저장소에 반영하려면 풀(Pull) 작업을 수행한다.
* 워크플로(workflow)는 작업 절차를 통한 정보 또는 업무의 이동을 의미하며, 작업 흐름이라고도 부릅니다. 더 자세히 말해, 워크플로는 작업 절차의 운영적 측면입니다. 업무들이 어떻게 구성되고, 누가 수행하며, 순서가 어떻게 되며, 어떻게 동기화를 시킬지, 업무를 지원하기 위한 정보가 어떻게 흐르는지 그리고 업무가 어떻게 추적되는지입니다. (작업의 흐름도, 작업 절차, 업무의 이동성)
Git은 꼭 필요한가?
누구와도 협업할 필요 없이 혼자서 혼자만의 프로그램을 개발하는 개발자가 아닌이상 Git은 필수입니다.
소규모 프로젝트, 대규모 프로젝트 모두 Git을 사용합니다. 어떤 일들을 하기에 필요로 할까요?
Git에서 일어나는 일, 주로 사용하는 용도
- 똑같은 환경에서 시작(환경 설정)
- 서버개발자중 한명이 환경을 구성합니다. 모두 같은 환경에서 개발하여 불필요한 시간을 없애고 서로 주고 받는 와중에 일어나는 충돌을 최소화합니다. 프레임워크를 갖추고 공통으로 쓰는 코드들을 미리 넣어두고, 테스트 코드나 샘플코드들을 넣어주어서 프로젝트 개발 시작하기전에 팀원 모두 같은 코드로 테스트할 수 있는 환경도 제공할 수 있습니다.
- 내가 작업한것을 로컬저장소에서 원격저장소로 밀어내거나(push) 원격저장소에서 최신 형상을 내 작업공간인 로컬저장소로 당겨옵니다(pull)
- 내가 작업한것들을 팀원들이 볼 수 있게 원격 저장소에 올립니다. 팀원들은 내가 작업한 코드들을 받아서 좀 더 높은 버전에서 작업 진행이 가능합니다. 혹여나 서로 같은 위치의 코드를 수정하는 경우 충돌이 발생할 수 있기때문에 주의해야합니다.
- 작업 분리
- branch 를 새로 생성해서 작업분기를 둘 수 있습니다, A작업중에 B작업을 하기위하여 branch를 checkout 하거나, A작업과 B작업과의 충돌을 확인합니다. 각 작업에 충돌이 생기면 revert하는 등의 자유로운 명령어로 형상관리가 가능합니다.
Git을 호스팅해주는 웹 서비스들
깃 저장소 서버를 대신 유지 및 관리해주는 서비스 입니다. 다른 유저들과 함께 온라인으로 하나의 프로그램을 제작하는것도 가능하며 많은 오픈소스 프로그램들이 Github를 통해서 전 세계 개발자들에 의해 제작되고 있습니다. GitHub는 현재 MS가 인수하여 모회사로 있습니다. 주로 개인은 GitHub, 회사는 GitLab를 사용합니다.
저장소들을 GUI 환경에서 사용할 수 있게 해주는 소프트웨어 프로그램
소스를 간편히 업로드 할 수 있게 도와주는 프로그램입니다. eclipse(spring)나 vsscode 같은 IDE의 경우 프로그램 내에 git을 제어할 수 있는 GUI가 존재합니다.
'📄Document' 카테고리의 다른 글
[IT 지식] 물리 서버와 논리 서버의 차이 (0) | 2021.12.28 |
---|---|
[IT 지식] IT 인프라의 집약형과 분할형 아키텍처 (0) | 2021.12.23 |
트랜잭션(Transaction)이란? (0) | 2020.06.08 |
OAuth란? (0) | 2020.06.04 |
URI이란? URL이란? URN이란? (0) | 2020.05.14 |