본문 바로가기
Github

Github 입문

by 키모형 2022. 12. 12.

Git 이란?

Git 은 소스코드를 효과적으로 관리하기 위해 개발된 분산형 버전 관리 시스템이다.

 

프로그램 소스의 버전 관리 이외에도 프로그램의 협업 개발과 통합, 빌드, 테스트, 배포 등의 일련의 과정을

하나의 프로세스로 운영하는 DevOps 의 가장 기본이 되는 도구중 하나이다

 

주요 용어와 개념

처음 Git 을 시작할때 어려운 부분이 많은 용어와 개념의 이해 입니다. 핵심 용어와 주요 개념을 이해하고 나면 git을 사용하는 것이 그리 어렵지 않을것입니다. 물론 git 을 잘 사용하려면 어느정도의 경험과 시행착오가 있어야 합니다.

Working Directory

작업디렉토리로 Git 으로 관리할 프로그램의 소스나 파일등이 위치하는 곳이라고 생각하면 됩니다. git 명령을 이용해 초기화 작업을 실행하면 Repository 가 생성되게 됩니다.

Repository

우리말로 저장소라고 합니다. Working Directory에서 이루어지는 모든 작업들에 대한 정보가 저장되는 곳입니다. Working Directory 내에 .git 폴더안에서 관리 됩니다.

분산 작업을 하는 경우 local repository, remote repository 로 분리 됩니다.

Staging Area

Working Directory 에서 작업된 내용이 Repository로 저장되기 전에 보관되는 준비 영역으로 Index라고도 합니다. .git/index 파일로 관리 됩니다.

  • git add  Staging Area
  • git commit  Repository

Stash

작업이 마무리 되지 않은 파일들을 잠시 stack 에 저장해 두는 것으로 예를 들어 작업중 다른 요청을 처리하기 위해 branch 를 변경해야 하는 경우 현재 작업중인 상황을 git stash 로 저장해 두고 나중에 다시 불러와 마무리 하고 commit 을 진행할 수 있습니다.

Branch

버전을 관리하는 묶음을 말하는 것으로 마치 나무가치 처럼 분기해서 관리할 수 있다고 해서 붙여진 이름 입니다. 현재 작업에서 단순한 내용 수정이 아닌 구조적인 변화나 새로운 시도를 위해 다소 큰 규모의 수정이 필요한 경우 기존 작업 Branch 를 남겨두고 새로운 Branch 를 생성해 이동한 다음 작업을 하는 방식입니다. 만일 작업이 성공적이면 다시 기존과 병합(Merge) 하거나 Branch 를 버리고 기존의 작업 Branch 로 되돌아 갈 수 있습니다.

  • HEAD: 자체로 branch는 아니며 현재 작업하는(가장 마지막 commit된) local branch 를 가리키는 특수한 포인터
  • master: 기본이 되는 메인 branch로 기본적으로 생성됨
  • origin: 특별히 지정하지 않으면 기본적으로 지정되는 remote repository를 가리키는 주소이름

commit, pull, push

Git을 통해 이루어지는 작업들에 대한 명칭이며 git 프로그램의 명령이기도 합니다.

  • commit: 작업된 내용을 확정하는것을 말함. 간단한 메모와 함께 작업내용을 repository 에 저장.
  • push: Local 에서 commit 된 내용을 remote 로 보내는 작업.
  • pull: Remote 에서 변경된 사항을 local 에 반영하는 작업

Clone, Fork

Clone은 Git repository 를 복제하는것을 말합니다. Local 혹은 Remote Repository 를 모두 복제해 사용할 수 있습니다.

그런데 다른 사람의 repository 는 clone 을 해도 push 권한이 없기 때문에 수정사항등을 관리할 수 없습니다.

 

Fork는 Github에서 다른 계정의 Repository 를 내 계정의 Repository 로 복사해 오는 것을 말하는 것으로 원본과 연결되어 변경사항등이 반영 됩니다.

Fork된 repository 는 내 계정에 있으므로 Local 로 Clone을 만들 수 있습니다. 이렇게 되면 파일들의 push 권한이 내게 있으므로 수정사항을 관리할 수 있게 됩니다.

다만 원본 프로젝트로 반영되는 것은 아니며 원본에 대한 반영은 pull request 를 요청하면 권한이 있는 원본 소스 관리자가 코드 리뷰를 통해 반영하는 과정을 거치게됩니다.

Merge, Rebase

두 작업 모두 branch 에서 작업한 내용을 master 로 합치는 것을 말합니다. 다만 과정상에 차이가 있습니다.

대부분의 경우에는 merge 를 통해 branch 에서 작업한 내용을 master에 병합하게 됩니다. 이 과정에서 충돌나는 파일이 있다면 검토를 통해 확정본을 결정해야 합니다.

다만 새로운 branch 로 작업하는 과정에 master 역시 계속 변화가 있다면 병합하는 과정과 이후에 복잡한 히스토리 로그로 인해 관리가 어려운 문제가 있을 수 있습니다. 이 경우 branch 의 base 를 master 이후로 옮겨(re-base) 1차적으로 정리한 다음 병합을 진행하는 형식으로 변경 이력을 단순화할 수는 있지만 원래의 commit 이력이 사라지게 되므로 자세한 이력이 필요한 경우에는 신중하게 고려해야 합니다.

Github

Github는 기본적으로 git의 remote repository를 제공하는 일종의 클라우드 서비스로 github 이외에도 gitlab, gitbucket 등이 있습니다. 이들은 단순한 git repository 의 역할뿐만 아니라 협업을 위한 부가적인 도구들(wiki, project관리, Issue, 블로그)을 제공하고 있습니다.

Github의 경우 공개 프로젝트는 무료로 제공 되었기 때문에 많은 오픈소스 프로젝트들이 관리되기 시작한 배경 이기도 합니다. 비공개 프로젝트의 경우 비용을 지불해야 했으나 MS에 인수된 이후 2019년 1월 초부터 비공개 저장소를 무료로 제공하기 시작했습니다.

대신 무료 계정(개인 사용자)은 한 저장소당 최대 3명의 사용자까지만 무료로 등록할 수 있으며, 이 제한을 해제하려면 월 $7의 비용을 지불하는 유료 계정으로 전환해야 합니다.

 

GitHub.com 도움말 문서

GitHub Docs Help for wherever you are on your GitHub journey.

docs.github.com

 

원본 출처 : 짧고 굵게 배우는 프로그래밍 강좌 (dinfree.com)

 

 

반응형

'Github' 카테고리의 다른 글

Github 입문 동영상 강좌  (0) 2022.12.12
Git, Github 실전 튜토리얼  (0) 2022.12.12