본문 바로가기
기타/Git

[Git] Git 이란?

by 코딩하는 랄로 2023. 11. 18.
728x90

Git 이란?

개발을 공부하다보면, Git이라는 툴을 자주 접하게 되고 개발자라면 Git을 사용할 줄 알아야 한다는 말도 자주 듣게 된다. 여기서 말하는 Git은 무엇이길래 개발을 하는 사람이라면 알아야하는 것일까?

 

 

version controll system( = configuration management tool )

Git은 버전 관리 시스템 중 하나로써 형상 관리 도구라고도 부른다. 여러 애플리케이션을 살펴보면 초기에 한번만 만들어지고 끝나는게 아닌 이후에도 새로운 기능이 추가, 버그 수정, 기능 향상 등 프로그램이 계속해서 업그레이드 된다.

 

만약 애플리케이션의 새로운 추가 기능을 넣어서 업그레이드 시켰는데, 해당 기능에 심각한 오류가 발견어 해당 기능 이전의 버전으로 돌아가야 하는 상황이 생긴다면 어떻게 해야 할까? 또는 협업하는 과정에서 누군가가 원본 코드를 엉망인 코드로 덮어씌운 경우에는 어떻게 해야 할까?

 

이러한 상황에서 버전 관리 시스템을 사용하지 않고, 기존의 원본 코드를 직접 수정하면서 작업을 했다면 아마 이 전 버전으로 코드를 되돌리는 일은 상당히 힘든 일이 될 것이다. 

 

이러한 상황을 방지하고 개발자들이 소스 코드를 효과적으로 관리할 수 있게 해주는 무료, 공개 소프트웨어가 바로 버전 관리 시스템인 것이다.

 

 

SVN => GIT

Git 이전에도 CVS 등 여러 버전 관리 시스템이 존재해왔고, 지금 현재는 SVN과 Git이 주로 사용된다.( 그 중에서도 대부분이 Git...) SVN는 Git 이전의 나온 버전 관리 시스템으로, 중앙 서버에 소스코드와 히스토리(버전 관리를 위한)를 저장하는 시스템이다.

 

하지만, SVN은 중앙 서버만을 이용하기 때문에 느리다는 단점이 있고 장애가 발생할 경우 해당 소스 코드를 관리할 수 없게 된다. 이러한 단점을 보완하고자 나온 것이 Git 버전 관리 시스템이다.

 

Git은 분산형 관리 시스템으로, 소스코드를 여러 PC와 저장소에 분산해서 저장해 놓는다. 그렇기 때문에 중앙 서버에 문제가 생기더라도 로컬 저장소에 커밋이 가능하고 이를 이용해 중앙 서버의 소스코드도 복원 할 수 있다.

 

또한, 사본을 각 로컬에서 관리하기 때문에 SVN보다 속도적인 면에서도 우세하다는 장점이 있어, 요즘은 대부분의 사람들이 Git을 사용한다.

 

 

 

Git의 특징과 장점

Git의 여러 특징 중 핵심적인 특징과 그로 인해 오는 장점에 대해서 알아보자.

 

Distributed development

직역하면 분산 개발로, 하나의 전체 소스 코드를 각 개발자의 로컬로 복사본을 제공하고 이를 수정한 소스코드를 다시 하나의 저장소로 복사할 수 있다. 이 때, 변경된 지점(수정된 부분)을 가져와, 원래의 소스 코드(원본 코드)에 병합하여 로컬에서 이루어진 수정과 동일하게 원격 저장소에 있는 소스코드도 수정할 수 있다.

 

즉, 원격 저장소에 있는 코드를 직접 수정하는 것이 아닌 로컬 저장소로 복사해온 뒤 수정한 다음 수정 사항을 원격 저장소에 반영(merge : 병합)할 수 있는 것이다.

 

 

support for non-linear development  

직역하면 병렬 개발을 위한 도움이다. 개발자들에게 협업은 매우 중요하고 동시에 여러명이서 해당 소스 코드를 작업을 한다.( 각자의 로컬 환경에서 ). 이 때, 각자의 로컬 환경에서 작업한 코드를 그냥 무작정 원격 저장소의 소스 코드를 덮어씌운게 된다면 충돌하는 상황이 발생할 수 있다.

 

이러한 상황이외에도, 병렬 개발을 하다보면 여러 문제가 되는 상황이 발생할 수 있는데, 이러한 상황이 발생하지 않도록 Git에서는 branch 및 merge 기능의 지원, 비선형 개발 이력을 시각화하고 탐색 할 수 있는 강력한 도구를 제공하는 것이다.

 

 

Efficient handling of large projects

Git은 분산형 관리 시스템으로, 인터넷이 연결되지 않은 곳에서도 개발을 진행할 수 있고, 또한 매우 빠르기 때문에 대형 프로젝트나 변경이 많은 작업에 유용하다.

 

또한, 로컬 저장소를 통해 중앙 서버에 문제가 생기더라도 복원이 가능하기 때문에, 대형 프로젝트와 같이 협업하는 개발자가 많아질 수록 어디서든 개발 할 수 있고 빠르고 복원하기도 쉬운 Git은 매우 유용한 것이다.

 

 

 

Git & Github

처음 개발을 접하시는 분들이라면, Git과 Github의 차이점에 대한 궁금증을 한번 쯤은 품어보았을 것이다. 간단하게 답하자면, Git은 버전 관리 시스템이고 Github은 Git으로 관리하는 프로젝트를 올려둘 수 있는 Git 호스팅 사이트이다.

 

Git은 데이터를 저장할 공간만 있다면 어디서나 사용할 수 있다. 개인 PC에서도 사용할 수 있고, USB에서도 사용할 수 있는 것이다. 만약, 드롭박스나 구글 드라이브 같은 클라우드 서버에 올리게 된다면? 여러 다른 개발자들과 인터넷을 통해 버전 관리를 할 수 있게 되는 것이다.

 

이러한, Git 프로젝트를 올려둘 수 있는 대표적인 Git 호스팅 사이트가 바로 Github이다. Github에 Git 프로젝트를 올려 두면 시간, 공간의 제약없이 협엽할 수 있게 되는 것이다.

 

 

728x90

'기타 > Git' 카테고리의 다른 글

[Git] Git 개체 - Commit  (2) 2023.11.22
[Git] Git 개체 - Tree  (2) 2023.11.21
[Git] Git 개체 - Blob  (1) 2023.11.21
[Git] init  (0) 2023.11.18
[Git] 설치 및 초기 설정  (1) 2023.11.18