Git(분산형 버전관리시스템)이란?

Murpin·2022년 9월 20일
3

개인공부

목록 보기
1/5

서론

git에 대한 내용을 설명하는 입장에서 한번 나의 생각을 정리보았다. 생각을 정리한다는 것은 나의 머릿속 git이란 단어를 들었을 때 어떻게 설명을 해야할까?를 정하고 개념과 개념을 설명하는 단어들의 의미를 알고 있음이라고 생각한다. 간단하게 말하면 만약 누군가 “git이 뭐죠”라는 질문에 나는 이렇게 답할 것이다라는 것을 정리한 것이 공부나 면접을 준비하는 과정을 정리한 내용이니 혹시라도 오해가 되는 내용이 있다면 첨삭 혹은 수정 요청 바랍니다.

if..

git에 대해 설명해주세요, git에 대하여 알고계신가요? 개발자들은 git을 왜 사용하는 것 같나요? 분산형 버전관리시스템의 장점과 단점을 설명해주세요

위에 대한 내용은 모두 git을 알고 있는지를 물어보는 질문입니다. 과연 여러분은 해당 질문에 대해 답할 준비가 되셨나요? 아직 준비가 되지 않으셨다면 저의 글을 읽어주시고 한번 후기를 작성해주시면 감사하겠습니다.

먼저 개념부터 알아보겠습니다. 저는 면접 질문에 대한 대답은 핵심적인 단어를 곁들인 하나의 문장으로 소화해 내는 것이 베스트라고 생각합니다.
압박면접이 많다고 하는 요즘 이렇게 대답하고 단어에 대한 해설도 준비한다면 완벽하지 않을까요?

git이란?
여러명의 개발자들 간에 개발 파일들의 작업을 조율하기 위한 분산 버전 관리 시스템

뭔가 개념만으로는 부족하다고 하시는 면접관이 있다면 git의 특성을 통해 git을 사용하는 이유를 설득해보면 좋을 것 같습니다.

그렇다면 git을 개발자들이 왜 사용하나요?

Git의 장점이 협업에 매우 탁월하게 사용되기 떄문입니다.
깃을 사용하는 대표적인 장점으로는 총 세가지가 있습니다.

  • 소스코드를 주고 받을 필요 없이 다수의 개발자가 프로젝트가 동일한 기능을 동시에 개발할 수 있습니다.(동시성)
  • 또한 기능를 작성하다가 오류가 발생하거나 기획자가 해당 기능을이 취소될 경우, 작업하던 코드를 과거로 돌려야할 때, 이전 코드로 되돌릴 수 있습니다.(가역성)
  • 위와 같이 이전 코드의 내용과 수정한 에디터가 저장되기에 오류의 추적이 용이하기 때문입니다.(기록성)

여러분들이 이제 100% 대답을 했다고 자만했을 때, 기습질문이 들어올 겁니다.

버전 관리시스템을 말씀하셨는데 그에 대해 설명부탁드립니다.
분산형이라면 다른 형도 존재하나요? 존재한다면 간단하게 설명부탁드립니다.

맞습니다. git은 분산 버전 관리 시스템이라고 개념으로 대답했기에 그렇다면 버전 관리 시스템에 대해서도 설명할 줄 알아야합니다. 또 더 깊게 들어가면 이외에는 무엇이 있고 왜 분산 버전관리 git만이 주목받는지 아는 것도 중요할 것 입니다.

먼저 분산형에 집중하기보다는 버전 관리 시스템에 대해 먼저 간단히 소개하겠습니다.

버전관리시스템(Version Control System)이란?
특정 문서 또는 소프트웨어 등의 버전을 안전하게 관리(기록, 유지, 갱신)하는 시스템

단어 의미대로 버전을 안전하게 관리하기 위해 사용되는 시스템입니다.
그렇다면 이 버전을 안전하게 관리하는 방식에 따라 형태가 달라질 것입니다.
제가 조사한 바로는 총 3가지가 있는데, 하나씩 설명해보겠습니다.

Local VCS
로컬형 버전관리시스템
사용자의 컴퓨터에 관리할 버전 내용을 저장한다.

비교적 사용하기 간단하나 다른 사람들과의 공유가 어렵고, 사용자의 컴퓨터에 문제가 생겼을 때 복구가 어려운 단점이 있습니다.

ex ) RCS, SCCS

Center VCS
중앙형 버전관리시스템
사용자의 컴퓨터가 아닌 여러 사용자의 버전 관리 내용을 중앙 서버에서 관리한다.

하나의 중앙 서버에서 팀원의 역할, 권한 등을 관리할 수 있기 때문에 편리하지만,
팀원은 가장 최신 버전만 가져가서 사용할 수 있고 중앙 서버에 문제가 생길 경우 모든 팀원들의 작업을 할 수 없게되며, 서버가 날아갈 경우 이때까지 쌓아온 프로젝트에 대한 정보(소스코드 및 데이터베이스 등)이 날아갈 수 있다는 위험성이 있습니다.

ex ) CVS, subversion

위와 같이 여러가지 버전관리방식이 존재합니다.
RCS 같은 경우에도 과거부터 지금까지 git과 많이 비교되어왔고 사용이 더욱 간편하다는 이점으로 언제나 토론되기도 합니다. 하지만 현재 국제적이나, 국내적으로 github의 영향력이 커지는 시점과 github이라는 무료 오픈소스, 비선형 기록, 선택적 중앙집중화등 성능이 압도적이기 때문에 git을 통한 프로젝트 관리를 하게 됩니다.

Division VCS
분산형 버전관리시스템
중앙에서 관리하고 있던 모든 이력을 가진 저장소 전체를 복사하여 사용자의 컴퓨터로 가져와 사용한다.

사용자의 컴퓨터에서는 Local로 개발을 할 수 있으며.
이를 중앙 서버로 보낼 수도 있고 중앙 서버의 진행상황을 사용자의 컴퓨터로 갱신시켜서 사용할 수도 있습니다.
때문에, 중앙서버에 문제가 생겨도 사용자의 local 저장소에 저장된 데이터로 복구시키기가 용이하며 공동작업을 하는 팀원들 모두가 이러한 저장소 정보를 갖고 있으므로 서버와 일부 사용자의 데이터가 날아가도 복구가 가능합니다.
(git의 내용)

ex) git

위의 내용을 이해했다면 여러분들은 git이 무엇인지 이해하셨을 겁니다.
혹시 자신이 없다면 아래 질문에 혼자서 답해보시는 연습을 하는 것도 좋을 것입니다.

git이 뭔가요? what is Git

요약

Git: 여러 사람이 함께 개발 파일들을 조율하기 위한 분산형 버전관리 시스템
Why git?

  • 따로 파일을 전달할 필요없이 저장소에 있는 코드를 가져와 여러 사용자가 코드의 기능을 작성할 수 있으며(동시성),
  • 코드가 잘못되었을 경우에 코드를 되돌릴 수 있는 기능(가역성),
  • 또한 그 코드를 되돌릴 수 있는 기록과 작성자를 알 수 있는 기능(기록성)이 있기에
    git이 개발자들의 사이 협업에 많이 사용된다.

Git과는 다른 형태의 로컬형과 중앙형 버전관리시스템들도 있다.
로컬형 : 사용자의 컴퓨터에 직접 내용을 저장하는 저장방식
중앙형 : 사용자의 컴퓨터가 아닌 여러 사용자의 버전 관리 내용을 중앙 서버에서 관리하는 방식.
분산형 : 중앙에서 관리하고 있던 모든 이력을 가진 저장소 전체를 복사하여 각 사용자의 컴퓨터로 가져와 사용하며 그에 대한 이력 또한 따로 관리하며, 데이터를 분산하여 저장하는 방식.

다음 포스팅은 git에 대해 알았으니 git gui 세팅과 실제로 사용하는 방법을 다루어 보겠습니다. 감사합니다.
잘못된 내용 혹은 오타등의 피드백 주시면 감사하겠습니다
qw04011@gmail.com

profile
모든 것에 배움을 얻고자합니다

0개의 댓글