본문 바로가기

STUDY LOG/깃 | 깃허브

💛 [깃 & 깃허브 사용법] 깃과 깃허브를 써야 되는 이유 (장점)

728x90
반응형

 

Git을 사용해야 하는 이유 1️⃣,  내가 생성한 파일의 버전관리

 

소프트웨어에는 버전관리가 필요하다. 꼭 클라이언트의 요청이 없더라도, 버전별로 이전 버전의 기능을 다시 가져오게 될 수도 있고, 누군가 잘못된 코드를 섞으면 복원해야 될 때도 있기 때문이다. 그래서 언제든 특정 시점의 버전을 다시 이용하는데 문제가 없게끔 변경된 내역을 관리해줘야 하는 것이다. 이 때 필요한 것이 버전관리를 위한 툴, Git이다.

 

 

 


 

 

 

 

Git을 사용해야 하는 이유 2️⃣, 다른 개발자와의 협업

어느 정도 규모가 있는 프로젝트를 진행할 때는 혼자가 아닌 여러명의 개발자가 협업하게 된다. 하나의 공유 가능한 공간 안에서 여러 개발자들이 각각 맡은 파트를 가져가서 작업하고, 작업사항을 업데이트하고, 서로의 작업 로그를 살펴볼 수 있어야 하며, 이에 더해 버전별 백업도 실시간으로 진행해야 한다.

하지만 여러 사람이 모듈별로 나누어 실시간으로 작업하는 소프트웨어 개발의 특성상 로컬 저장소라던지 메일이나 클라우드를 통해 관리하려면 어렵고 불편하다. 따라서 작업 중 실시간으로 작업내역을 공유할 수 있는 원격저장소가 필요하다. 이 때 필요한 것이 협업을 위한 저장소, Github이다.

 

 

 

 


 

 

 

 

Git 사용방식 이해하기

Git분산 저장소 방식으로 버전을 관리한다. 로컬저장소(PC, Git)원격저장소(GitHub) 양 쪽에서 관리를 할 수 있으므로 서버 단에 문제가 생기더라도 로컬에서 작업할 수 있어 지속적인 협업이 가능한 것이다.  다시 말해, 로컬에서 (Git)을 이용해 실제 개발과 버전 관리를 진행하고 깃헙(Github)반영본을 업데이트하는 식으로 작업이 진행된다.

 

순서도로 살펴보면 Git을 이용한 버전관리는 다음과 같다.

1) 로컬에 저장소를 생성한다 (init)
2) 깃허브 서버와 연결한다 (remote add)
3) 서버에서 전체 내용을 가져온다 (clone)
4) 작업이 진행된 이후에는 일부 변경된 내용만 가져온다 (fetch)
5) 필요에 따라 다른 서버의 내용을 가져올 수도 있다 (fork)
6) 추가작업은 브랜치(branch) 따서 진행(checkout)하며 파일의 변화는 스냅샷(snapshot)으로 저장한다.
7) 새롭게 추가한 작업이 완성되면 마스터 브랜치와 병합 (merge) 한다
8) 개발이 완료되면 완료된 파일들을 스테이징 영역에 추가 (add) 한다
9) 내용이 안전하게 추가되었다면 로컬에 반영 (Commit) 한다. 

 

 

이 내용을 다시 GitGitHub로 나누어 그림과 함께 쉽게 이해해보자.

 

 

사용하기, Git 

 

Git은 기본적으로 CLI(윈도우 커맨드 창, 터미널)을 꺼내놓고 명령어로 폴더 간 작업을 수행한다. 그러나 Source Tree와 같은 GUI(그래픽 인터페이스 창) 어플리케이션의 도움을 받아 마우스 클릭으로도 사용할 수 있다. 기능별로 터미널과와 Source Tree를 오가며 필요한 기능을 유동적으로 이용할 수 있다.

소프트웨어를 개발하기 시작하면 관련 파일들이 모두 담기는 하나의 큰 프로젝트 폴더를 만들게 된다. 이 폴더에서 Git을 시작하면, 지금부터 이 폴더의 모든 수정내역들이 저장되는 .git 이란 폴더가 생긴다. 이 곳이 바로 Git의 로컬저장소이다. (숨김폴더)

 

 

 

"2021 정보처리기사 > 소프트웨어 형상관리"에 관련된 글을 읽고 나면 Git의 명령어를 보다 쉽게 이해할 수 있다.

 

 

 

 

개발이 진행되는 PC의 특정 폴더에서 Git을 시작하면,
지금부터 이 폴더의 모든 수정내역들이 저장되는 .git 이란 폴더(숨김)가 생긴다. 이 곳이 바로 Git의 로컬저장소이다. 

 

## 깃에서의 init = 로컬 저장소 생성 = 내 PC에서 지정한 폴더를 git 저장소로 만들겠음 ##

➡ 명령어: $ git init

 

 

프로젝트 폴더에 Git 저장소를 생성했다면, 백업할 파일을 선택 후 git의 *스테이징 영역(Staging Area)에 추가한다.

✔ 내역을 로컬에 저장하기 위해 작업 디렉토리의 선택 파일을 스테이징 영역에 추가(add)

➡ 명령어: $ git add

 

*스테이징 영역(Staging Area):
작업 내역을 바로 Commit 하여 로컬 저장소에 저장하지 않고, 스테이징 영역에 저장했다가 Commit을 하는 이유는 스테이징 영역에서 작업 내용을 한 번 더 확인하여 선별적으로 로컬 저장소에 반영하기 위함이다. 이렇게 하면 시간은 더 소요되지만 좀 더 안정된 버전 관리 작업이 가능해진다.

 


이후 PC에서 작업을 진행하고, 특정 시점까지 발생하는 작업 내역과 파일의 변화를 스냅샷(Snapshot)으로 저장(Push)하는데, 스냅샷은 이전 스냅샷의 *포인터를 가지므로 버전의 흐름을 파악할 수 있다. 이후로도 프로젝트에 의미 있는 변화가 있을 때마다 커밋으로 버전별 박제를 해 둔다. .zip 처럼 전체 파일을 압축해서 저장하는 것이 아닌, 각 버전의 변경사항만 기록되는 것이기 때문에 용량걱정도 없다.

 

✔ 작업 내역을 로컬 저장소에 저장한다 = commit

➡ 명령어: $ git commit -m "(작업수행 내용)"

 

*포인터:
접근하고자 하는 데이터가 기억되어 있는 위치에 대한 정보를 의미한다. 더욱 자세한 설명은 "자료구조의 형태" 에서 알아보자

 

이 외에도 버전별 로그를 확인하는 $ git logs, 특정 로그 시점으로 복원하는 $ git reset -hard (버전) 등 작업 과정에서 버전별로 필요한 다양한 종류의 명령어를 필요에 따라 수행하게 된다.

 

 


 

 

 

새로운 기능 추가 & 테스트는 브랜치로 간편하게!

이미지출처: https://ohdowon064.tistory.com/3

 

Git에서는 저장소가 처음 만들어지면 마스터 브랜치(Master Branch; 하늘색)가 생성되고, 여기서 기본적인 버전 관리가 진행된다. Little Feature(보라색) 부분을 보면, 진행중인 프로젝트로부터 뻗어나온 곁가지라는 것을 알 수 있다. 이를 "브랜치(Branch)를 딴다"라고 하며, 이렇게 갈라져 나온 가지를 피쳐 브랜치(Feature Branch), 또는 토픽 프랜치(Topic Branch)라고 한다.

 

✔ 추가 작업영역 생성 = 가지를 치다(branch)

 ➡ 명령어: $ git branch "(브랜치명)"

 

 

각각의 브랜치는 다른 브랜치에 영향을 주지 않으므로 주가 되는 부분은 마스터 브랜치에서 작업하고, 중간 중간 새로운 기능을 시도해볼 때는 브랜치에서 작업을 하다가 기능이 괜찮으면 작업내역을 마스터 브랜치에 병합(merge) 하게 된다. 작업 중 기능을 버려야 될 때는 -d 옵션으로 삭제할 수도 있다.

✔ 추가 작업영역과 마스터브랜치 병합 = merge 

➡ 명령어: $ git merge "(브랜치명)"

 

 

 


 

 

 

협업하기, Git Hub

 

 

 

Git의 스냅샷으로 박제한 내역들을 원격으로 전송해서(remote add) 다른 개발자들과 함께 이용할 수 있는 공용 공간에 저장할 수 있다. 먼저 다른 구성원들이 작업해서 올린 내역들을 다운받고, 거기에 내가 작업한 내역을 전송하는 식으로 협업하게 된다.

 

이 모든 과정들이 순서대로, 체계적으로 관리되고 로그가 남기 때문에 나중에 문제가 생기더라도 작업자와 작업내용, 작업시점을 확인할 수 있고 얼마든지 과전 버전으로 되돌려서 문제를 해결할 수 있게 된다. 또한 Manage Access(Collaborator) 기능을 이용하여 협업자들과의 공유 클라우드를 만들고, 협업자에게 해당 프로젝트의 Commit과 Push 권한을 줄 수도 있다.

 

이 때 사용하게 되는 원격저장소는 주로 웹 서버를 빌려 사용하게 되는데, Git 사용자들이 가장 많이 사용하는 웹 호스팅 서비스는 깃 허브(Github.com) 이다. 깃 허브는 오픈소스 프로젝트에 대해서는 무료로 공간이 제공되지만, 소스를 비공개로 하는 프로젝트에 대해서는 비용을 받아왔다. 그러나 2019년부터는 비공개 소스에 대해서도 서비스를 무료 제공한다고 한다. 그야말로 Git똥찬 서비스가 아닐 수 없다.

 

 

"Git이 영상을 찍는 앱이라면, GitHub는 유튜브 라는 플랫폼이다 라고 생각하면 편하다."
- 얄팍한 코딩사전

 

 

꼭 팀프로젝트가 아니더라도, 내가 혼자 공부하고 있는 내용도 얼마든지 백업해 놓을 수 있으니 프로그래밍을 공부하는 중이라면 한 번쯤 깃 허브를 구경해보자. 내 친구는 "Hello World" 시점부터 Github에 공부 내역을 백업해뒀다고 한다. 실시간 바이오그래피 겸 포트폴리오가 되는 것이다.

 

또한 Github는 Reddit처럼 내가 업로드해놓은 프로젝트에 대해 전세계 뛰어난 프로그래머들에게 피드백 받을 수 있고, 이를 통해 특정 코드에 대한 개선사항을 공짜로(!) 반영할 수 있게 된다. 또, 실력이 좋다면 다른 누군가의 혹은 특정 기업 프로젝트에 기여할 수도 있다. 잘 알려진 오픈소스 프로젝트에 내 코드가 기여한 기록이 있으면 취업에도 큰 도움이 된다고 한다. 

 

 


 

Git똥차네! 깃 진입장벽 철거용 튜토리얼

독학러의 오아시스같은 유튜브, 얄팍한 코딩사전을 통해 Git 사용법을 아주아주 쉽게 배울 수 있다. 심지어 극상의 퀄리티를 자랑하는 온갖 컨텐츠와 강좌들이 100% 무료이다. 이런 분들은 지쳐서 유튜브를 그만두는 일이 없게끔 구독&좋아요 박고 광고도 끝까지 시청해주는 것이 국룰이다.

 

위 영상을 시청하며 Git을 시작하려면 우선 프로젝트를 진행할 PC에 Git을 다운로드하고, 원하는 IDE(VS Code, Atom 등)를 다운받아 세팅한다. 그리고 마지막으로 CLI를 이용하거나, 마우스로 Git을 다룰 수 있게 해주는 Source Tree를 설치해야 한다. 아래 체크된 부분들을 클릭하면 각각의 다운로드 링크로 이동된다.

 

✔ Git 설치하기
✔ IDE 설치하기 (VS Code)
✔ Source Tree(GUI) 설치하거나 CLI로 명령어 수행하기

 

 

 

 

만약 프로그래밍을 처음 시작한다면 "파이썬 시작하기, 설치하기, VSC 세팅까지" 글을 참고해도 좋다.

 

파이썬/Python:: 파이썬 시작하기, 설치하기, VSC 환경설정까지 총 정리

파이썬을 공부해기로 마음먹은 당신! 구글과 유튜브를 믿고 호기롭게 시작은 했으나, 너무나도 많은 정보가 산재되어 있고 낯설기만 하다. 특히 나처럼 비전공자 독학러거나 개발 분야에 계시

y-oni.tistory.com

 

 

 

 

 

 

 

728x90