이번 시간에는 개발자라면 🚨 꼭 알아야하는 툴인 Git 과 GitHub 에 대해 알아보겠습니다. Git 과 GitHub 은 우리가 개발자로서 일을 하는데 협업을 하는데 있어 굉장히 큰 도움을 주는 도구 입니다.
그렇다면 Git은 무엇이고 Git hub는 무엇일까? 이번 편에서는 개념에 대해서만 알아보자.
**Git**
의 개념과 목적에 대해 알아보자.**GitHub**
이 무엇인지 이해하며**Git**
과 의 차이점에 대해 알아보자.**Git**
을 사용하기 위해 저장소(repository)를 생성하고 git hub의 원격저장소(remote repository)와 연동해보자.
Git의 공식 명칭은 분산 버전 관리 시스템(VCS:Version control system)이다.
Git은 버전 관리 시스템으로, 시간이 지남에 따라 파일의 변경 사항을 추적하는 도구입니다.
버전 관리 시트템(VCS)으로는 과거에는 CVS와 SVN을 사용했었는데, 현재는 git을 주로 사용하고 있다.
버전 관리를 할 수 있다.
협업(Collaboration)에 용이하다.
백업 (Back up) 을 통해 실수로 인해 파일의 지워졌거나 수정이 필요할 시 Recovery가 가능하다.
Git은 데이터를 다루는 데 있어서 다른 버전들과 크게 다르다고 할 수 있다.
Git의 데이터는 파일 시스템의 스냅샷(Snapshot)이라 할 수 있으며, 크기가 아주 작다. Git은 Commit 하거나 프로젝트의 상태를 저장할 때마다 파일이 존재하는 그 순간을 중요하게 여긴다. 파일이 달라지지 않으면 git은 파일을 새로 저장하지 않고 단지 이전 상태의 링크만 저장한다.
즉 , Git은 데이터를 스냅샷의 스트림으로 취급한다.
출처:https://git-scm.com/book/ko/
Git 은 쉽게 말하면 제품군이라고 할 수 있다. VCS에 여러 종류가 있듯이 그 가운데 하나이고 그 Git을 제어할 수 있는 여러가지 종류의 프로그램을 이용해서 git을 사용 가능하다. 즉, Git은 여러가지 종류의 프로그램을 이용해서 사용할 있습니다.
이러한 프로그램을 Git client라고 합니다.
Git client 중에서 우리에게 익숙한 GUI(Graphic User Interface)프로그램으로는 git hub-desktop, Tortoise Git(윈도우에서만 사용가능한 git), Source tree(단점 복잡, 장점 자유롭다) 등이 있다. 하지만, 우리는 개발자로서 GUI 보단 CLI(Command line interface)를 주로 사용할 것이므로 깃의 사용법에 대해 추후 살펴보도록 하자.
참조 : GUI vs CLI 환경
Git Hub는 Git repository를 위한 호스팅 플랫폼이다.
보통 git의 저장소(repository)는 자신의 컴퓨터(local computer)안에 저장되어 있는데 원격저장소를 통해 협업과 관리가 용이하도록 원격 저장소를 제공해주는 플랫폼이라고 할 수 있다.
즉, git 저장소(repository) 서버를 대신 유지 및 관리해주는 서비스라고 할 수 있다.
Git이 버전관리 시스템을 위한 도구라면 Git hub는 Git을 사용하는 프로젝트를 위한 호스팅 서비스라고 할 수 있다.
Git을 사용하기 위한 초기 셋팅과 깃에 저장소에 업로드를 해보자.
Git이 컴퓨터에 있는지 유뮤를 확인하고 Git을 설치 할 것
Git hub 사이트 가입할 것
깃 설치(Git instiall)는 https://git-scm.com <- 여기서 다운을 받아 설치가 가능하다. 맥/윈도우 버전 각 컴퓨터에 맞게 설치를 하자. 맥(Mac)의 경우 터미널(terminal)을 실행 후 git --version을 쳤을 때 나오면 이미 깃이 설치된적이 있다는 것이다.
원격 저장소(remote repository)를 사용을 위해 https://github.com <- 여기에도 회원 가입 하자.
Git 의 저장소(repository)를 생성해보자.
먼저 본인 컴퓨터(local computer)에서 만들고 싶은 위치에다가 폴더를 하나 생성한다.
필자의 경우는 홈에 gitmake라는 폴더(directory)생성을 완료하였다.
그 폴더 안에 git init이라는 명령어를 써주자.
[git init]: init:은 intialize(초기화)의 약자로 git init은 git의 저장소를 만들고 버전관리를 git에게 시키겠다는 의미다.
이렇게 git에게 버전관리를 시킬 빈 깃의 저장소가 만들어졌다. 폴더 내부를 확인해보면 숨김 파일로 .git이라는 파일이 우리가 생성한 gitmake폴더에 만들어졌다. 그리고 다시 git폴더 내부를 들어가면 여러파일이 자동으로 생성되어 만들어져있는데 , 이는 우리가 만든 부모 디렉토리(gitmake폴더)에서 변경된 수정사항의 버전 정보들이 관리하기 위한 것들이다.
<주의> .git이라는 파일은 지우면 그동안 기록해놓은 버전 관리 정보들이 몽땅삭제되므로 지울떈 신중하게 생각하고 지워야한다.
GitHub repository 를 생성하려면, github.com 으로 이동 후 우측 상단 + 버튼을 누른 뒤 'New repository' 라는 옵션을 선택 후 repostitory 이름을 정하고 public/private 옵션을 설정해주고 만들어준다.
만들어진 원격 저장소를 가보면 아래와 같이 되어 있다.
로컬환경에 이미 git repository가 잇다면 중간설정되로 그게 아니라면 첫번째 설정대로 따라서 설정하면 원격 저장소와 연결된다.
이제 원격저장소와 연결할 준비가 되었고, 명령어는 Mac 사용자는 terminal 우분투 사용자도 터미널과 같은 CLI환경에서
아래와 같은 명령어를 치면 연결된다.
git remote add origin URL 로 사용하며 예시는 아래와 같다.
[URL]: 여기서 URL은 git hub에서 만든 repository url을 복사
git remote add origin https://github.com/Luceta/makeyourfirstgit.git
이 명령어는 Git repository 에게 이름이 origin 이라는 어떤 URL을 알려주는 것과 같습니다.
다만, 이름이 꼭 origin 이어야 하지는 않지만 보통 일반적으로 origin이라고 붙여주는게 일반적입니다.
<주의> origin이라 안하고 다른 이름으로 설정하였다면 push과정에서도 그 이름을 해줘야함을 까먹지 말자!
원격 저장소와 연결했다고 해서 파일이 바로 이동되어지고 변경사항이 바로 추적되는 것은 아니다.
이를 위해서는 로컬 컴퓨터에서 git add, commit 과정을 걸쳐 push를 git hub 원격 저장소에 해줘야 업데이트 된다.
변경사항을 만드는 과정까지 git add, commit을 완료 하였다면, 아래의 명령어를 통해 로컬의 만든 git 저장소를 git hub의 원격 저장소로 push해주어 연동시키자.
git push origin master
참조: git add , commit , push 에 대해 잘 모르겠다면, 아래를 참조하자
링크 공유해주신 덕에 잘 배우고 가요 :)