Git이란? : 최최최최종 말고, 진짜 최종 말고

모든 일이 그렇지만 기록을 남긴다는 것은 굉장히 중요한 일이다.

기록이 잘 남겨져 있다면 어떤 시기에 어떤 변화들을 가져갔는지 빠르게 확인할 수 있고,

자칫 실수를 하더라도 기록을 통해 실수들을 바로잡으면서 다시 올바른 방향으로 갈 수도 있다.

모든 직종이 그렇겠지만, 특히 개발에서는 이 기록이 굉장히 중요하다.

 

그래서 오늘은 개발자가 기록을 남기는 특별한 방법에 대해서 알아보자.

 


 

Git

Git은 VCS, 즉 Version Control System 중 하나다. 여기서 말하는 버전 관리는 것은 어떤 의미일까?

버전은 '어떤 프로그램을 수정, 개선하여 완성한 것'이라고 사전에서 확인할 수 있다.

그렇다면 버전 관리는 어떤 프로그램을 수정, 개선해서 완성을 하기 위해 관리하는 걸 의미하는 것 같다.

 

그럼 조금 더 이해를 돕기 위해 우리 일상과 관련된 예시를 들어보도록 하겠다.

 

출처 : 리니지M 앱스토어

 

우리는 이미 일상에서 버전이라는 말을 익숙하게 보고 듣고 있다.

게임, 어플을 예로 들면 새로운 버전이 나오게 되면 업데이트를 진행하게 되고,

이전 버전에서 발생했던 문제가 해결되거나, 없었던 기능을 사용할 수 있게 된다.

 

사용자의 입장에서 공급자의 버전 업데이트를 통해 버전 관리를 경험하기도 했지만

반대로 우리가 공급자의 입장에서 어떠한 프로그램의 버전 관리를 해본 적도 있다.

 

 

우리가 흔하게 파일을 관리하는 방법의 예시 사진이다.

이렇게 이전 버전에서 새롭게 추가되거나 변경 혹은 삭제가 되어야 하는 부분이 있으면 수정 한 뒤,

새로운 파일을 만들어서 관리를 했던 방식으로 우리는 버전 관리를 진행했었다.

그러나, 이렇게 버전 관리를 하게 된다면 어떤 문제가 발생할까?

 

버전 관리를 이딴 식으로 하면 어떤 게 가장 최종 버전인지 헷갈릴 수 있다.

또 하나의 기획서를 여러 명이서 함께 수정한다고 하면 서로의 최종 버전이 달라서

결과물이 아예 다른 버전이 나올 수 있는 상황이 발생할 수 있다.

 

이런 사태를 방지하고자 새롭게 파일을 만드는 방식에서 다른 방식으로 버전을 관리하기 시작했다.

 

노션이라는 플랫폼에는 내가 작성한 문서의 히스토리가 남아있다.

물론 이게 버전 관리를 한다고 말하기는 애매하지만 변경된 버전 관리 방식과 닮아있어 가져와봤다.

변경된 버전 관리 방식에서는 하나의 파일 안에서 파일이 변경된 시점마다 기록을 남기는 방식으로 적용되었다.

 

무슨 말이냐 하면, 변경 이력이 생길 때마다, 작성자, 시간, 변경 내용 등의 정보를 파일 어딘가에 기록으로 남겨서

하나의 파일 내용은 결국 가장 최종본만 남아있게 되지만, 변경 이력을 통해서 어떤 시점에 어떤 내용이 변경됐는지

추적해서 혹시라도 누락된 내용이 있다면 그 내용을 찾을 수 있게 되는 것이다.

 

그럼 다시 처음으로 돌아가서, Git은 VCS, 즉 코드의 버전을 관리하는 시스템이다.

그렇다면 Git은 어떤 방식으로 버전을 관리할까?

 

728x90

Git으로 버전 관리를 하는 이유?

Git은 버전 관리 시스템의 대표 격이라고 할 수 있다.

물론 Git 외에도 다양한 버전 관리 시스템이 있지만, Git으로 버전 관리를 하다가 마주하는 문제가 있을 때,

Git이 가장 범용적이고, 많은 정보들이 있기에 빠르게 처리할 수 있게 된다.

 

다시 질문으로 돌아와서, 왜 코드는 이력을 남기는 방식으로 버전 관리를 할까?

 

 

1. 파일을 생성하는 방식으로 관리하는 경우, 코드 관리가 어려워짐

첫 번째 답변 같은 경우는 이미 버전 관리에 대해서 설명하면서 말한 부분이기 때문에 넘어가겠다.

 

2. 개발자 간의 협업에 도움을 줄 수 있다.

개발을 혼자 하는 경우도 있지만, 우리가 취업하게 되면 함께 개발을 하는 경우가 대다수 일 것이다.

특히 신입으로 들어가게 되면, 사내 코드에 대해서 이해하는데도 오랜 시간을 사용하는 경우가 발생하는데

그때, 코드를 누가 어떻게 작성했는지 확인할 수 없다면 코드만 보면서 흐름을 파악해야 하는데

병아리 입장에서는 그게 참 쉽지 않은 작업이기도 하다.

누가 어떤 시점에 작성했는지 확인할 수 있다면, 해당 코드의 의도를 해당 작성자에게 다이렉트로 질문하면 되기 때문에

개발자 간의 협업이나 코드 이해도에 도움을 줄 수 있다.

 

3. 코드를 보호하는데 도움을 줄 수 있다.

갑자기 코드를 보호한다니? 그게 무슨 말이냐? 할 수도 있다.

예시 상황을 들자면, 어떤 개발자가 하루를 꼬박 써서 3000줄의 코드를 작성했다고 가정하자.

굉장히 힘들었지만 뿌듯해하고 있던 와중, 갑작스러운 코드 프로그램의 오류로 해당 코드들이 사라지게 된다.

아무리 커맨드 + z를 눌러봐도 이미 고인이 되어버린 코드는 돌아오지 않는다.

위의 상황에서 만약 이 개발자가 Git을 이용해 2900줄의 코드를 작성한 시점에 기록을 남겼다면??

이력만 남아 있다면 언제든지 해당 시점으로 돌아가 사라진 코드를 되살릴 수 있게 된다.

 

또 다른 예시 상황을 들자면, 하나의 프로젝트에서 영역을 나눠서 여러 명의 개발자가 작업을 진행하고 있었다.

Git을 사용하지 않는 상황에서 하나의 공간에서 작업을 진행하게 됐는데,

내가 심혈을 기울여 만든 기능이 다른 개발자에 의해 사라지게 되는 상황이 생긴다면??

 

이러한 극단적인 상황에서 서로가 서로의 코드를 보호하고, 내 코드를 보호하면서 행복한 개발 문화를

만들어 갈 수 있게 해 주는 게 Git으로 버전 관리를 하는 이유가 되겠다.

 


 

포스팅 작성에 참고한 감사한 글들

▶ GIT 공식 문서