반응형

 

 

들어가는 말

이 Git에 관해 글을 처음 쓰기 시작한 날은 2021년 2월 20일이다.

요구사항 경청하고, 요구 사항 분석하고, 구조 설계, 개발(구현), 테스트, 회의, 멤버 관리 등 매일 해야 하는 업무에 시간이 쫓기고

집에 오면 아내와 아이들과도 시간을 보내야 하니까 솔직히 긴 호흡으로 깊은 내용의 블로그를 쓴다는게 쉽지 않다.

그런데 Git 개념을  1~2시간 이내의 글을 쓴다고 될 일은 아니라서, 한달 정도 매일 시간을 조금씩 내면서 써볼까 한다.

( 아마 작성 중간에 글을 읽는 분도 계실텐데, 양해를 구합니다~ )

 

처음부터 Git을 사용한 사람이라면 Git의 Version과 Work Space 관리가 당연하게, 자연스럽게 받아들여질 것이다.

그런데 나처럼 개발을 시작한지 20년이 사람은 비슷한 듯 다른 SVN과 Git의 Version 관리 방식이 헷갈린다.

자꾸 SVN을 사용하던 버릇으로 Git 사용하니까 제대로 Git을 사용하지 못하는 나를 발견했다. 

그래서 SVN을 화끈하게 머릿속에서 지워버리고, 새 마음으로 Git을 받아들이기로 했다.  :)

 

 

SVN 그리고 Git 이들은 뭐가 다를까?

대략적으로 SVN과 Git을 비교해보면 이렇다. (개인적인 느낌, 생각이 많이 들어 갔으니까 그냥 참고용으로 봐주세요)

 

비교표 Git SVN (SubVersion)
전반적인 느낌 어렵다.
개념 설명이 잘 된 책을 한번 쭉 읽어야 Git을 Git답게 쓸 수 있다.
개념이 쉽고, 명령어 사용법도 쉽다.

Feature 없는게 없다.
Version 관리의 끝판왕!!!
딱 필요한 핵심 기능을 제공한다.

Branch 관리 Branch, Tag 관리가 편리하다. Bad T.T
코드 분산 관리 OK No
Code Collision(충돌) 조금 관리에 신경쓰면 그럭저럭 충돌을 피할 수 있다. Poor T.T
Multi User 동시 작업 OK 불편하다.
복구 특정 Commit 시점으로 복구하기 편함 Poor

 

그리고 위 표에 언급한 것 말고도, Git은 Github 또는 Bitbucket, GitLab 처럼 Cloud 환경을 제공해주니까 내가 별도로 SVN 서버를 구축하지 않아도 된다.  그냥 내 PC에서 코드 작성하고 GitHub 또는 Bitbucket, GitLab Cloud에 Push하면 되니까 아주 편하다.

 

또 하나, Git이 어려운 이유는 아마도 여러 사람이 같은 Code를 수정하고, 동일한 Repository에 Push를 하면서 어려움을 겪는 것 같다. (내 경우는 특히 그랬다.) 

혼자 Git과 GitHub를 사용할 때는 별 문제 없이 잘 사용했는데 여러 명이 같이 코드를 수정하고 Push하고 Merge를 하려니까 자꾸 불편한 상황이 생겼다.

Git 스터디해보니, 모르고 써서 생기는 불편함이었다. Git 개념과 사용법을 잘 익히고 사용했다면 분명 문제가 없었을 것이다.

 

 

GitHub, GitLab, BitBucket 이들은 무엇인가?

처음에 Git를 접할 때는 GitHub만 보였는데, 실무에서 Git을 많이 사용하다보니 GitLab도 보이고, BitBucket도 보였다.

이들은 비슷하면서 다른데, 아래 표로 정리해봤다.

 

  GitHub GitLab Bitbucket
서비스 제공 회사 Microsoft GitLab Inc. Atlassian
Feature 우리가 OpenSource를 다운로드할 때 접할 수 있는 바로 그 곳 GitHub랑 Feature의 차이를 잘 모르겠다. (내 생각임) Jira 연동이 되서 좋다. (내 생각임)
Web UI 3개 모두 비슷하다. Repository 자체에 대한 관리 UI를 제외하면 거의 같다.
CLI (Command) Git command는 3개 모두 똑같다.  (CLI가 제품마다 다르면 큰일나지 않을까? ^^)
Price Free
(Private Repository는 유료)
Free
(Private Repository는 유료)
Free
(Private Repository는 유료)

 

결국, 3개 모두 기능(Feature)는 비슷하고 가격도 경쟁이 붙어서 그런지 가격도 비슷해졌다.

나는 회사에서 Bitbucket을 구입해서 사용하고 있는데, 확실히 회사의 Project 관리 시스템(Jira, Confluence 등)과 연동되니까 관리하는 입장에서는 Bitbucket이 SW 품질 관리에서 유리한 면이 있다. 즉, 회사에서 사용할 거라면 위 3개 중에서 Bitbucket이 좋다는 뜻 :)

 

그렇다면, 개인적으로 사용할 거라면?

그래도 Bitbucket Cloud 서비스를 이용하는 것이 다른 2가지 제품보다 좋은 것 같다 (개인 의견임)

해외의 대형 Open Source Project에 좀 참여해서 일을 해보니, Atlassian 제품을 이용해서 Open Source Project를 관리하는 Community가 꽤 많고, 나에게 그런 경험이 있어서 그런지 Atlassian의 Bitbucket이 좀더 익숙한 느낌이다.

 

 

Git 설치 (Installation)

 

##
## Mac OS 컴퓨터에 설치하는 경우
##

$  brew install git

$  git --version
git version 2.32.0 (Apple Git-132)

$  git config --global user.name "Peter"

$  git config --global user.email "peter@example.com"

 

 

Git 개념, 동작 방식

나처럼 Version 관리 도구로써 SVN을 먼저 접한 사람은 Git의 동작 방식이 쉽게 이해되지 않는다.

그래도 찬찬히 살펴보면, 알게 되리라 :)

 

Repository가 Local가 Remote로 나누어져있다. 이 부분이 처음 Git을 접하는 사람이 헷갈려하는 부분이다.

Repository를 2개로 나누어서 관리하다보니, Local과 Remote를 명확하게 구분해서 이해하지 않으면 git 명령을 수행할 때마다 헷갈리게 된다.

아래 그림이 쉽게 Local Repository에서 처리되는 내용, Remote Repository에서 처리되는 내용이 잘 구분되서 설명되고 있다.

 

출처  https://greenido.files.wordpress.com/2013/07/git-local-remote.png?w=696&h=570

 

출처   https://www.devguide.at/en/git/pull-push-the-remote-repository/

 

 

위 그림을 이해했다면, 아래 그림을 이용해서 생각을 더 넓혀보자.

Repository (저장소)는 Remote, Local만 있는게 아니다. Forked Repository라는 것이 있다. 아마 꽤 활성화된(참여자가 많은) Open Source Project는 이 Forked Repository가 꽤 많을 것이다.

 

출처  https://www3.ntu.edu.sg/home/ehchua/programming/howto/Git_HowTo.html

 

 

출처  https://www3.ntu.edu.sg/home/ehchua/programming/howto/Git_HowTo.html

 

 

출처  https://www3.ntu.edu.sg/home/ehchua/programming/howto/Git_HowTo.html

 

 

 

 

TODO : 위 동작 절차(프로세스)에 관해서 상세하게 설명하기  (작성 중)  -->  Coming Soon !!!

 

 

 

 

 

 

 

 

 

Git Branching Model

git-flow

github-flow

 

 

Git Branch 모델(그 중에서도 git-flow)에 관한 제일 유명한 블로그가 있다.

바로 아래 블로그인데, 이 Git Branch 모델에 관해  개발 실무자 입장에서 얘기를 해볼까 한다.

그리고 github-flow 같은 다른 종류의 Branching Model도 다룰까 한다.

 

https://nvie.com/posts/a-successful-git-branching-model/

 

A successful Git branching model

In this post I present a Git branching strategy for developing and releasing software as I’ve used it in many of my projects, and which has turned out to be very successful.

nvie.com

 

 

 

 

읽으면 좋은 Web Docs

https://www.atlassian.com/git/tutorials/learn-git-with-bitbucket-cloud

 

Learn Git with Bitbucket Cloud | Atlassian Git Tutorial

Learn Git with Bitbucket Cloud

www.atlassian.com

 

'Git' 카테고리의 다른 글

Git Ignore (.gitignore) 설정 방법  (0) 2022.07.04

+ Recent posts