brunch

You can make anything
by writing

C.S.Lewis

by 고라니 May 11. 2018

Git으로 관리하고 Github에 올리기

멍카 웹페이지 - 2

지난 글에서 로컬에 리액트를 띄우는 것까지 성공했으니, 이번 글에서는 로컬에 생성한 프로젝트를 Git으로 관리하고 Github에 올려 보겠다.



Git :: 분산 버전 관리 시스템

버전 관리 시스템(Version Control System, VCS)

버전 관리 시스템은 파일의 변화를 시간에 따라 기록하여 과거 특정 시점의 버전을 다시 불러올 수 있는 시스템이다. 즉, 개발을 하다 문제가 되는 부분을 누가 마지막으로 수행했는지 누가 언제 이슈를 만들었는지 등의 이력을 확인하고, 해당 버전으로 복구할 수 있다는 것이다.


그렇다면 분산의 의미는 뭘까?

형상 관리 툴을 이야기하자면 많이들 알고 있는 SVN을 떠올릴 수 있을 것이다. 분산의 반대말인 중앙 집중식 버전 관리 시스템(Centralized Version Control System, CVCS)의 대표적이 예가 SVN인데, CVCS 방식은 버전 관리되는 모든 파일을 저장하는 서버가 별도로 있고 클라이언트가 중앙 서버에서 파일을 받아 사용하는 방식이다. 그렇기에 만약 중앙 서버가 다운된다면 더 이상의 버전 관리를 할 수가 없다.

이와 반대로 분산 버전 관리 시스템(Distributed Version Control System, DVCS)은 저장소에 있는 소스를 통째로 복제하여 클라이언트 모두가 현재 상태의 파일뿐만 아니라 그 프로젝트의 전체 이력을 가지고 있는 것이다. 하여 서버가 다운되더라도 로컬에 모든 이력이 저장되어있기 때문에 빠르게 조회하여 작업할 수 있다.


그렇다. Git은 거의 모든 명령을 로컬에서 실행하며, 로컬 파일과 데이터만 사용하기 때문에 네트워크에 있는 다른 컴퓨터는 필요가 없다. 아래 이미지는 Git workflow이다. 원격 저장소(Remote repository)에 올리기(push) 전까지의 소스 추가(add), 저장(commit), 소스 변경 파일 보기(diff) 등등의 작업 들은 로컬에 저장된 소스에서 이루어지는 것을 확인할 수 있다.

Git workflow



Git 용어 알아두기


저장소 (repository)

소스 코드를 저장하는 물리적 공간으로, 

로컬 저장소(Local Repository)와 원격 저장소(Remote Repository)로 나뉜다.


커밋 (Commit)

작업한 내용을 로컬 저장소에 저장하는 명령어다. 보통 어떤 기능을 작업하고 '이슈 수정', '기능 추가' 등 해당 작업의 로그를 남겨 저장한다.


푸시 (push)

로컬 저장소에 커밋된 내용 중 원격 저장소에 반영되지 않은 작업들을 원격 저장소에 적용하는 것이다.


풀(pull)

원격 저장소에 저장된 새로운 버전 내용을 로컬로 받아오는 것이다.


머지 (merge)

서로 다른 브랜치나 버전에서 같은 파일을 수정한 후 병합하는 과정. 병합 과정에서 충돌(conflicts)이 발생할 수 도 있으나 수정하여 다시 병합하면 된다.


브랜치(branch)

새로운 기능을 개발하기 위해 독립적으로 나뉘는 커밋, 한 나무에서 다른 뿌리 같은 개념이다. 나중에 기능이 완성되면 기존 코드와 합칠 수 있다.



이제 어느 정도 깃이 무엇이고 왜 써야 하는지 알았다면 아래 명령어를 실행하여 깃을 사용해보자.

터미널을 열고 지난 글에서 생성한 react-test 폴더로 들어가 아래 명령어를 수행한다.


깃을 초기화하여 생성시키고

git init

react-test 폴더의 전체 파일을 staging에 추가한 후

git add *

staging에 올라온 파일을 로컬 저장소에 저장한다.

git commit -m "first commit"


git log 명령어를 통해 확인하면, 위에 추가한 파일들이 master branch에 'first commit'이라는 메시지로 저장되었다는 것을 확인할 수 있다. (여기서 메시지를 직관적으로 남겨야 이력관리가 수월하다.)

저장소를 처음 만들면 master branch가 만들어 진다.


사실 더 알아야 할 것들이 많지만, 우선 흐름을 익혀보고 지속적으로 사용하면서 배우는 것이 좋을 것 같다.

여기까지가 로컬에 깃을 설치하고 로컬 저장소에 첫 번째 커밋을 등록한 것이고, 이제 원격 저장소에 올려보자.



Github :: git을 사용하는 프로젝트를 위한 웹호스팅 서비스

깃헙은 단순히 호스팅 사이트를 제공하는 것이 아닌 코드를 위한 소셜 네트워크를 제공한다. 자신이 하고 있는 일과 유사한 개발자나 프로젝트를 찾을 수 있고, 프로젝트를 복제(fork) 하거나 참여(contribute) 할 수 있다. 또한 프로젝트의 이슈, 위키를 관리할 수 있으며 오픈 소스로 등록하면 무료로 이용 가능하나 비공개는 유료이다. 비공개 무료 저장소가 필요하면 Bitbucket을 사용하기도 한다. (하지만 이것도 5명까지 무료)


우선 Github에 가 회원가입을 하고, 저장소를 생성해보자. (레파지토리 생성)


저장소 이름을 정하고 [Create repository] 버튼을 누르면 아래와 같은 화면으로 이동된다.



우리는 로컬에 생성한 저장소를 원격으로 올리는 것이니, 2번째 박스의 push an existing repository from the command line의 명령어를 사용하면 된다. 

터미널을 열고 로컬 저장소를 생성한 폴더에서 아래 명령어를 실행한 후

git remote add origin https://github.com/go-rani/MeongCaWeb.git
git push -u origin master


github 페이지를 새로고침하여 보면 아래와 같이 원격 저장소에 올라간 것을 확인할 수 있다.




다음 글에서는 무료로 사용하는 Github Pages와 GUI 기반의 git client SourceTree를 사용해보겠습니다.



[참고 자료, 이미지 출처]

https://git-scm.com/book/ko/v2

http://pterolex.github.io/ignite-knowledge-sharing/git/index.html

브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari