Programming

; develop a program

Git & GitHub

[GitHub] 깃허브(GitHub)란?

Clloud_ 2022. 11. 9. 11:05
반응형

이번 포스팅에서는 깃허브(GitHub)에 대하여 공부를 해보고자 한다.

 


깃허브(GitHub)

깃허브(GitHub)는 분산 버전 관리 툴인 깃(Git)을 사용하는 프로젝트를 지원하는 웹호스팅 서비스이다.

버전 관리와 협업 프로젝트를 쉽게 진행할 수 있기 때문에 함께 개발한 소스코드를 공유할 때 또는 상대로부터 받은 코드를 수정할 때 굉장히 유용하다.

 

깃(Git)을 사용하여 자체적으로 서버를 구축할 수 있지만 Github 서버를 이용하는 편이 편하다.

깃(Git)을 활용해서 짠 코드를 공유할 수 있고 웹에서 보다 편하게 쓸 수 있다.

 


GitHub 장점

깃허브는 소스코드 다시 보기, 문서자료의 분류 정리, 커뮤니티 관리, 코드 호스팅, 프로젝트 관리 및 통합에 사용된다.

 

분산적인 개발
깃(Git)을 사용하는 전체 개발 내역을 각 개발자의 로컬 컴퓨터로 복사할 수 있다.

나중에 서로 수정된 내역을 합치기(Merge)할 수도 있으며, 이때 Git의 고유한 프로토콜을 이용하게 된다.

 

효율적인 개발
깃(Git)은 일반적인 다른 버전 관리 시스템보다 성능이 뛰어나며, 변경 이력이 많더라도 변경된 내용만 처리한다는 점에서 메모리적인 효율성이 뛰어나다.

 

비선형적인 개발
깃(Git)은 브랜치(Branch)라는 개념이 사용된다. 다시 말해서 프로젝트의 가지치기가 가능하다는 뜻이다.
이는 트리 구조, 다시 말해서 비선형적인 구조라고 볼 수 있다.

 

변경 이력 보장
작업된 모든 내역(Commit 내역)들은 모두 별도의 영역에서 관리되어 안전하게 프로젝트를 운영할 수 있다.

 


Github 주요 개념

병합(Merge)
한 브랜치(Branch)에서 완성한 작업을 다른 브랜치에 병합한다.

 

브랜치(branch)
깃 리포지토리를 하나 만들면 기본적으로 main인 브랜치가 하나 생성된다.

main 브랜치의 소스코드를 그대로 둔 상태에서 main 브랜치의 기능을 추가하거나 유지 보수할 때에 사용한다.

 

커밋(commit)

소스코드의 업데이트를 확정하는 의미를 가진다.

확정된 순간의 코드 상태를 커밋 메시지와 함께 git 레포지토리에 저장된다.

로컬 저장소에 변경에는 반영되지만 원격 저장소에는 아직 반영되지 않은 상태이다

 

pull
원격 저장소의 내용을 로컬 저장소에 반영하는 것을 말한다. (fetch + merge)

 

push
Commit(head의 변경내용)을 원격 저장소에 올리는 것 즉 로컬 저장소에서 원격 저장소로 업로드하는 것을 말한다.

 

태그(tag)
특정 이력을 가지는 커밋(commit)에 대한 참조이다.

 

풀 리퀘스트(Pull request)

완료한 작업을 다른 사람이 리뷰하고 병합하도록 요청하는 작업이다.

 

이슈(issue)

기능에 대한 논의, 버그 추적하는 것을 의미한다.

 

위키(wiki)

링크들을 연결해 웹페이지를 생성한다.

 

푸시(Push)

내 컴퓨터 로컬에 저장되어 있던 버전 정보를 서버에 올리는 작업이다.

 

풀(Pull)
깃 저장소 서버로부터 내 컴퓨터 로컬로 버전 정보 전체를 가져오는 작업이다.

 


용어 정리

메인 저장소(Main repository)
오픈소스 프로젝트의 깃허브 상의 메인 저장소

개인이 기여하고 싶은 프로젝트의 저장소이므로 개인에게 쓰기 권한이 없고 일반적으로 이를 업스트림(Upstream)이라고 부른다.

 

개인 저장소(My github repository)
Github 상에서 자신의 계정상에 존재하는 저장소로 메인 저장소로부터 포크(fork)한 저장소

 

로컬 저장소(Local git repository)
자신의 컴퓨터에 생성한 로컬 깃 저장소

 

원격 저장소(Remote repository)

서버나 네트워크에 있는 저장소

기본적으로 로컬 저장소에서 작업을 수행하고 그 결과를 원격 저장소에 저장하는 방식이다.

 

작업공간(Workspace)
컴퓨터상에서 실제 내가 소스를 개발하고 수정하는 작업공간

 


반응형