본문 바로가기
[Useful tech]/[GIT]

Git 이란?

by hi_kmin6 2020. 2. 24.

GIt - 출처 : https://git-scm.com/ 

 

 

 

Git이란 '분산 버전 관리 시스템'으로 여러 컴퓨터 파일의 현재와 과거를 관리할 수 있는 유용한 도구입니다.

 

#Git의 필요성

 

프로젝트를 진행하다 보면 파일의 관리가 중요해집니다.

파일들의 공유, 그리고 공통된 파일의 수정 및 다른 방향으로의 진행 등이 파일 관리라 할 수 있겠습니다.

 

예를 들어,

본인과 팀원이 한 개의 파일에 대해서 동시에 편집하는 작업을 진행했습니다.

이 파일에 대해서 서로 동일한 부분도 있겠지만 다른 부분도 있을 것입니다. 즉, 충돌하는 부분이 있을 겁니다.

이러한 때에 파일의 변경 사항을 비교하고, 하나의 파일로 합치기 전 수정하도록 유도해주는 유용한 도구가 있다면 어떨까요?

 

이러한 파일의 공유와 관리를 쉽게 해주는 것에 Git의 필요성이 있습니다.

 

더보기

꼭 프로그래머 분들 뿐만 아니라 대표적으로 디자인을 업으로 하시는 분들 또한 여러 레이어로 이루어진 프로젝트를 깃을 이용해 작업하시면 프로그래머분들과 같은 이점을 보실 수 있을 거라 생각합니다. 그 외의 업에서도 본인이 파일을 공유하며, 자주 변경사항이 발생하고 이를 통합하여 관리를 하고자 하신다면 깃이 필요할 것이라 생각합니다.

 

#Git으로 하는 일

 

1. 깃은 사용자가 꼭 중앙 서버에 접속하지 않더라도 코드를 작성 및 수정할 수 있게 합니다.

2. 파일에 변화를 발생시키면 그 변화를 기록합니다. 또한 변경 사항을 서버의 저장소에 존재하는 파일에 업데이트합니다.

 

깃은 가장 최근에 변경된 사항들을 이용해 최신의 상태만 유지하는 것이 아니라, 파일을 저장소에 올린 시점부터 작업을 하면서 변경된 사항들을 모두 누적해서 기록하여 보관합니다. 따라서 깃을 이용하면 작업을 진행하다 과거에 어떤 변경사항이 있었는지 확인할 필요가 생기면 특점 시점으로 돌아가 파일을 확인할 수 있는 것입니다.

또한 이를 통해서 여러 사람이 하나의 프로젝트를 공동 개발하면서 문제가 발생한 경우 어떤 코드에서 문제가 발생했고, 이 소스코드는 언제 누가 작성했는지를 파악할 수 있습니다. 해당 코드의 작성자는 수정을 하고 문제의 원인 조치를 문서화하여 추후 문제를 예방시키며 프로젝트를 긍정적인 방향으로 이끌 수 있게 됩니다.

 

#Git을 사용하기 위한 몇 가지 개념

 

1. 저장소 (Repository)

저장소는 파일과 폴더를 저장해두는 공간입니다. 또 저장소는 '로컬 저장소'와 '원격 저장소'로 나뉩니다.

 

- 로컬 저장소(Local Repository) : Git을 사용하는 사용자의 PC에 파일이 저장되는 개인용 저장소입니다.

- 원격 저장소(Remote Repository) : 서버에 있는 저장소로 여러 사람이 함께 공유하기 위해서 사용되며, 대부분 해당 작업의 결과를 저장시키게 됩니다.

 

 

2. 커밋 (Commit)

 파일과 폴더의 추가/변경 사항을 저장소(로컬 저장소)에 저장하는 작업입니다. 커밋을 행하면 직전 커밋 상태부터 현재 커밋 상태의 변경 사항이 담긴 커밋이 만들어집니다. 커밋을 할 때마다 영문과 숫자로 이루어진 40자의 커밋 메시지를 남기는데, 저장소는 이를 통해 커밋을 구분 짓습니다.

 

 

3. 푸시 (Push)

 로컬 저장소에 커밋한 파일을 원격 저장소에 업로드하여 공유하는 작업입니다. 푸시를 진행하면 원격 저장소에 변경된 파일이 업로드되고 원격 저장소와 로컬 저장소의 상태가 동일하게 됩니다.

 

 

4. 클론 (Clone)

 원격 저장소를 복제하는 작업입니다. 복제 작업을 수행하면 원격 저장소의 내용을 통째로(최신 소스파일 및 변경이력) 받는 것을 말합니다. 복제한 저장소를 다른 PC에서 로컬 저장소로 사용할 수 있습니다. 

 

 

5. 풀 (Pull)

 원격 저장소에서 로컬 저장소로 업데이트하는 작업입니다. 풀 작업을 진행하면 원격 저장소에서 최신 변경 이력을 로컬 저장소로 다운로드하여 내 로컬 저장소에 그 내용을 적용합니다.

 

 

6.  브랜치 (Branch)

  소프트웨어 개발 시 동일한 소스코드 위에서 새로운 기능 추가, 오류 수정 등을 진행합니다. 이러한 과정에서 다른 버전의 코드들이 만들어집니다. 이 동시다발적인 작업을 가능하게 하는 것이 브랜치입니다. 각자의 독립된 저장소에서 소스코드를 작성하고 추후에 원래의 버전과 비교하고 통합(Merge)하여 새로운 버전을 만들어 냅니다. 이때 개별적으로 작성이 이루어진 것이 '브랜치(Branch)', 통합이 되어 최신의 상태를 유지하고 있는 것이 '마스터 브랜치(Master Branch)'가 됩니다.

 

 

# Git을 제공하는 서비스들

 

 1. GitHub https://github.com/

 

Build software better, together

GitHub is where people build software. More than 40 million people use GitHub to discover, fork, and contribute to over 100 million projects.

github.com

 

 2. Bitbucket https://bitbucket.org/

 

Bitbucket | The Git solution for professional teams

Collaborate on code with inline comments and pull requests. Manage and share your Git repositories to build and ship software, as a team.

bitbucket.org

 

 3. GitLab https://about.gitlab.com/

 

The first single application for the entire DevOps lifecycle - GitLab

“From project planning and source code management to CI/CD and monitoring, GitLab is a complete DevOps platform, delivered as a single application. Only GitLab enables Concurrent DevOps to make the software lifecycle 200% faster.”

about.gitlab.com

 

깃을 제공하는 대표적인 서비스는 위와 같이 3가지가 있습니다. 저도 사용 경험이 그나마 있는 것은 깃허브입니다. 깃 랩도 잠시나마 사용해봤었는데, 깃허브에 익숙해지신다면 금방 사용하실 것으로 생각됩니다.

Bitbucket의 경우, 저는 사용 경험도 없고 제 주변 지인 들도 사용하고 있는 것을 본 적이 없어 뭐라 말씀은 못 드릴 것 같습니다.

 

추후에 위의 3가지 서비스의 어떤 점이 다른지 조사해보고 정리하겠습니다.

 

다음 글에선 깃허브 사용 숙지를 위한 설명을 작성해보고자 합니다.


# 참고 자료

 

분산 버전 관리 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 분산 버전 관리(Distributed revision control, 또는 Distributed Version Control (Systems) (DVCS), 또는 Decentralized Version Control (Systems))는 소프트웨어 버전 관리를 위한 시스템이다. 이 시스템은 각 개발자가 중앙 서버에 접속하지 않은 상태에서도 코드 작업을 할 수 있는 것이 특징이다. 작업 모델[편집] 분산 모델은 일반적으로

ko.wikipedia.org

 

 

 

 

깃 (소프트웨어) - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 깃저장소 생성, 파일 추가, 원격 동기화를 표시하는 명령 줄 세션원저자리누스 토르발스[1]개발자주니오 하마노(Junio Hamano), 리누스 토르발스 등[2]안정화 버전2.21.0 / 2019년 2월 24일 (11달 전)(2019-02-24)[3] 저장소 프로그래밍 언어C, 셸, 펄, Tcl, 파이썬[4]운영 체제리눅스, POSIX, 윈도우, OS X플랫폼IA-32, x86-64언어영어종류버전 관리라이선스GNU 일반 공

ko.wikipedia.org

 

 

 

 

Git - Book

 

git-scm.com

 

 

 

  • backlog - Git 입문 

https://backlog.com/git-tutorial/kr/intro/intro1_1.html

 

Git을 이용한 버전 관리 【Git의 기본】 | 누구나 쉽게 이해할 수 있는 Git 입문~버전 관리를 완벽하게 이용해보자~ | Backlog

Git을 이용한 버전 관리 【Git의 기본】 | 누구나 쉽게 알 수 있는 Git에 입문하신 것을 환영합니다. Git을 사용해 버전 관리를 할 수 있도록 함께 공부해봅시다!

backlog.com

 

 

[GITHUB 사용법] 왕초보를 위한 깃허브사용법 (Git사용법)

코딩할 때 뺄래야 뺄 수 없는 서비스 중 하나가 GitHub (깃허브) 입니다. 현역 프로그래머에게는 너무나 친숙한 서비스지만, 코딩 초보자에게는 생소할 수도 있습니다. 그래서 이번에는 코딩 초보자도 바로 GitHub..

tagilog.tistory.com

 


# 작성 록

 

2020/02/24

Git을 조금씩 사용하고 있지만 아직 개념이 부족하여 공부하면서 최대한 정확하게 담아보고자 글을 작성했습니다. 아직 부족한 것이 많고 잘못된 것은 수정해 나가겠습니다. 감사합니다.