파이썬 코드로 배우는 Git&Github

개발자 필수 프로그램, Git

 

Git은 버전 관리 시스템의 하나 입니다. 그렇다면 버전 관리의 중요성은 어떨까요? 소프트웨어 개발을 진행하는 과정에서 특정 시점의 개발 결과물에 대한 관리가 필요합니다. 특히, 협업의 관점에서는 더더욱 중요합니다. 같은 소스를 이용하여 개발하는 개발자 입장에서 다른 사람의 개발 결과가 영향을 미칠 수 있으니 말입니다.

이러한 버전 관리는 누가 어떻게 언제 개발 소스를 변경했는지 알 수 있도록 해야 합니다. 필요시 현재의 결과를 유지하면서 새로운 결과를 내기 위해 별도의 버전을 생성할 수 있는 기능도 필요합니다. 개발 결과물이 잘못되었다는 것을 알게 되었을 때 정상적으로 동작하던 그 시점으로 돌아갈 수 있는 기능은 필수 입니다.

버전 관리 시스템은 많습니다. 과거에는 CVS, Subversion이 대표적이었지만, 요즘은 Git을 많이 사용하는 편입니다. 속도도 빠릅니다. 다만, 기존 CVS나 Subversion을 사용했던 사람들은 Git은 불편하게 느끼는 경향이 많습니다. 직관성이 떨어지고, 기존의 버전 관리 시스템과는 다른 방식으로 이뤄지는 점 때문입니다. 바로 분산 버전 관리라는 개념인데, 여러 명의 사용자들 간에 해당 파일들의 작업을 조율하는 기능이 그것입니다. 반면, 이 기능 때문에 협업이 필요한 프로젝트에 많이 사용되는 이유이기도 할 것입니다.

또한, Git을 이야기 할 때 가장 많이 이야기 되는 GitHub가 있습니다. Github는 깃허브라고 읽습니다. Git과 Github는 별개 입니다. Git으로 관리하는 프로젝트를 올려둘 수 있는 사이트명입니다. 하지만, 고프로가 액션캠을 대표하는 고유명사화 된 사례처럼 Github를 Git과 병행해서 사용하는 예도 많습니다.


파이썬 코드로 배우는 Git&Github 협업하는 개발자를 위한 버전 관리 지침서
유광명 저 | 영진닷컴 | 2022년 12월 10일팀 개발을 위한 Git, GitHub 시작하기 소스코드

 

Git이 직관성이 떨어지고, 다른 버전관리시스템과는 다른 방식으로 동작한다고 먼저 이야기 하였습니다. 바로 이때문에 많은 사람들이 어려움을 겪습니다. 이 책은 바로 이러한 사람들을 위해 만들어진 책으로 소개됩니다.

Git의 동작 개념과 다양한 명령어를 한 번에 숙지하는 것은 여간 힘들고 지루한 일이 아닙니다. 저는 어떤 방법을 사용하면 입문자들이 Git의 동작원리와 명령어들을 쉽게 익힐 수 있을지 고민해 왔습니다. 제가 고안한 방법은 작은 프로젝트를 진행해 가며, 그 과정 속에서 명령어를 실습하는 방식입니다. 실무 중에 발생할 수 있는 이슈를 예로 들고, 그 해결책으로 명령어를 제안하여 자연스럽게 익힐 수 있도록 구성했습니다. 머리말

저자가 이야기 하듯이 이 책은 Git의 입문서 입니다. Git을 본격적으로 배우기 전에 필요한 실습 환경을 구성하는 것 부터 시작하고 있습니다. 실무에서 사용되는 Git 연동 프로그램들을 소개하고 있습니다. 각각의 프로그램들을 다운로드 할 수 있는 사이트와 설치 방법까지 자세하게 알려줍니다. 프로젝트에 사용하는 프로그래밍 언어는 요즘 많이 사용하는 파이썬 언어를 사용하고 있습니다. 작성된 파이썬 코드를 버전 관리하는 실무를 따라할 수 있는 환경이 구성된 것입니다. 여기까지가 책의 1장, 즉 시작입니다.

책은 총 8개의 장으로 되어 있습니다. 1장에서 실습환경을 구축하였다면 2장에서는 저장소를 생성하고 명령어가 아닌 GUI 기반에서 Git 명령어를 체험할 수 있도록 하였습니다. 커밋이라는 중요한 개념이 나옵니다.

3장은 Git의 동작원리를 설명합니다. 이 장이 중요한 이유가 개념에 대한 확실한 이해가 필요하기 때문입니다. Git 저장소의 구성을 이해할 수 있도록 합니다. 동작 원리에 대해서도 그 개념에서 부터 하나하나 설명하고 있습니다.

4장에서는 Git 기본 명령어에 대한 소개와 학습입니다. 기본이 중요하다고 하였습니다. 이 장에 대한 페이지 할당도 다른 장에 비해 많은 편입니다. 그만큼 자주 사용되고 필수적으로 알아야 하는 명령어가 중요하다는 의미일 것입니다. CLI 환경에서 명령어를 사용하는 방법도 알 수 있습니다.

5장과 6장은 Git의 원격저장소의 대표격인 Github와 연동하여 사용하는 방법을 알려줍니다. 실제 프로젝트에서는 이와 같이 원격 저장소를 구축해두고 이용하는 경우가 많습니다. 이 때문에 이 부분도 돌발상황이 많이 발생하는데 이러한 상황에 대비할 수 있는 팁들을 같이 소개하고 있습니다.

7장은 브랜치 입니다. 바로 버전관리시스템에서 빼놓을 수 없는 기능입니다. 여러개의 서로 다른 작업영역을 가질 수 있는 것이 버전관리 시스템의 중요한 기능일 것입니다. 프로그램의 유지보수를 위해 우리가 하는 모든 일들이 이 브랜치라는 개념을 이해하고 적용하면 쉽게 할 수 있다는 것을 알게 될 것입니다. Git은 바로 여러 버전, 혹은 서로 다른 기능의 프로그램을 여러 루트로 별도로 만들 수 있다는 것이 핵심입니다. 많은 사람들이 정상동작하는 프로그램은 그대로 두고, 별도의 브랜치를 통해 새로운 기능의 추가 버전을 만들고 있습니다.

Git에도 전략이 필요합니다. 이러한 전략을 위한 기능이 있습니다. 바로 브랜치의 품질 유지를 위한 Pull Request와 브랜치의 효과적 운영을 위한 Gitflow 기능입니다. 해당 기능은 Git 표준 명령어는 아니지만 현업에서 많이 사용하기 때문에 빼지 않고 포함하여 설명하고 있습니다. 8장의 내용이 바로 이부분입니다.

조그마한 실습을 끝까지 이어가면서 실무에서 일어날 수 있는 상황을 많이 이야기 하고 있습니다. 이러한 시나리오 기반으로 학습을 해 나가는 분들께 좋은 책입니다. 개념 이해를 위해 다양한 그림을 통해 이해도를 높이고 있습니다. Git을 짧은 시간에 꼭 마스터 하고 싶으신 분은 이 책으로 기본기 다지기로 충분합니다. 그리고, 고수분들은 기존에 알고 있던 지식을 정리하는데 활용할 수도 있다고 생각합니다. Git이 버전관리의 대표적인 프로그램이 되어가는 만큼 빨리 익히면 익힐 수록 실제 프로젝트에서 바로 적용가능할 것 같습니다. 이러한 이유가 바로 이 책을 읽어야 하는 이유일 것입니다.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.