Skip to content
Mindou edited this page Oct 26, 2022 · 12 revisions

GitHub를 이용한 저장소 호스팅

GithubGit을 사용하여 자신이 만든 프로젝트를 올리거나, 다른 사람들이 올려둔 프로젝트를 깃허브 리포지토리repo에서 받는 등 다양하게 시도 해보도록 하겠다.

요약:

$ git init
$ git add [파일 이름]
$ git commit -m "커밋 내용"
$ git branch -M [<이전 이름>] [바꿀 이름]
$ git push [remote 이름] [원격 저장소 브랜치 이름]
$ git pull [remote 이름] [원격 저장소 브랜치 이름]
$ git clone [url 링크]

요약을 통해서 코드를 배우는 것도 좋지만 이 명령어를 처음 본다면 꼭 아래있는 내용을 정독하길 바란다.

Git 설치

튜토리얼1 Git의 기본 이번 장은 GUI가 아닌 CLI로 진행하는 점 유의하길 바란다. 만약 설치가 안되어 있다면 아래의 과정을 따라와주길 바란다.

git 설치 방법

window, macos

git이 다운이 안되어있다면 다운을 받아야한다.

image 깃 홈페이지에 들어가보면 download라는 버튼이 가운데에 있다. 눌러서 사용하는 운영체제에 맞게 받아주도록 하자.

다운 받은 후 실행 시킨 후 다운 받아주도록 하자.

image

다 받았다면 이렇게 뜨는 것을 확인할 수 있다.

image

WSL

혹 wsl를 사용하고 있다면, 다음과 같이 입력 후 다운 받으면 된다.

$sudo apt install git

부연 설명이긴 하지만, apt-getapt 차이는 다음과 같다.

  • apt는 보기좋은 진행률 표시
  • apt는 업그레이드해야 하는 패키지 목록 나열
  • apt는 apt-get, apt-cache 및 dpkg -l의 기능 결합
  • apt 및 apt-get 명령의 구문 비교
  • 새로운 명령어

다운 후 wsl 경우 다운이 되었는지 다음과 같이 쳐서 확인해보자.

$git --version

위의 깃 다운과 마찬가지로 github의 회원가입이 안되어 있는 독자는 깃허브를 반드시 회원가입하길 바란다.

github 회원가입

이 글을 읽고 있다면 깃허브의 사용이 아예 처음일 것이라는 생각이 들어 약간의 설명을 더 주고자 한다. 일반 깃허브 무료 이용자의 경우 깃허브의 혜택을 받지 못하는 경우가 있는데 만약 대학교를 다닌다면 학생 인증을 하도록 하자. 자세한 사항은 여기를 통해 확인해보자.

image

깃허브 사이트에 들어가서 우측 상단에 있는 sign up를 눌러 회원가입을 해준다.

image

들어간 뒤 이메일 비밀번호등 기입란에 기입하고 진행하여 회원가입 해주면 된다.

이렇게 다 회원가입 및 git이 다운이 되어있다는 가정으로 이제 작성을 하도록 하겠다.

깃의 다운이 끝나면 아마 폴더에 오른쪽 클릭하면 다음과 같이 창에서 git bashgit gui가 생성될 것이다.

추후에 쓸 것이니 일단은 넘어가도록 하자.

Repository 저장소 만들기

저장소(Git repository)란 말그대로 파일이나 폴더를 저장해 두는 곳이다. 같은 이름의 파일일지라도 데이터의 변형이 일어나면 변경 이력에 남는다. 이제 깃허브 저장소 호스팅에 대해서 설명하도록 하겠다. 우선 저장소의 생성이 필요하기 때문에 github 홈페이지에서 저장소 생성을 해줘야 한다. 저장소의 분류를 하자면 2가지로 나눌 수 있는데 각각 remotelocal로 구분할 수 있다.

  • 원격 저장소(Remote Repository): 여러 사람들이 같이 사용할 수 있는 공용 저장소
  • 로컬 저장소(Local Repository): 내 PC에 파일이 저장되는 개인 전용 저장소

Remote Repository 원격 저장소 생성

이하 remote repo

image

이렇게 좌측 상단 쪽에 보이는 image 버튼이나

image

우측 상단에 보이는 + 버튼을 누르면 new repository라는 버튼이 보일 것이다. 이를 repository라는 저장소를 생성하게 된다. 버튼을 누르게 되면 다음과 같은 창이 뜨게 되는데 자세한 것은 추후에 설명하고 여기서는 간단히 * 표시 된 내용만 기입하고 생성한다. 여기서 repo 이름을 기입할 때는 자신이 알아 볼 수 있는 이름으로 설정하여 기입하고, 띄어쓰기는 -로 변경되어 채워지니 유의하여 작성하도록 한다.

image

Local Repository 로컬 저장소 생성

이하 local repo

개인 컴퓨터의 로컬 저장소를 생성하기 싶다면 특정 폴더에서 오른쪽 클릭한다.

image

그 후 git bash를 선택하며 다음과 같은 창이 뜬다.

image

이러한 방식으로 나중에 깃 폴더로 초기화 싶은 폴더에서 오른쪽 클릭하여 초기화 시킬 예정이다.

$ git init

명령어를 사용하면 그에 맞는 폴더가 생성하게 되는데 그 폴더의 이름은 .git이거나 확인 할 수 없을 것이다. 그 이유가 바로 파일 탐색기에 있는 설정에 달려있는데 파일 탐색기에 숨긴 항목이 체크가 해제 되어 있다면 보이지 않을 수 있다. 따라서 파일 탐색기에 있는 숨김 항목을 체크 하여 확인해본다.

윈도우에서 서두에 .이 붙은 경우 숨긴 항목이라고 인식하여 숨기게 된다.

image

image

이렇게 깃에 대해 초기화가 됐으면 local repo 폴더라는 선언을 하게 되는 것이다.

Branch 브랜치

여러 명령어를 사용하기전에 branch에 대한 내용을 집고 넘어 가야한다.

branch는 독립적으로 어떤 작업을 진행하기 위한 개념이다. 간단히 생각하면 릴리스와 개발의 분업화, 작업 영역을 분할시킬 수 있는 개념이라고 생각하면 된다. 필요에 의해 만들어지는 각각의 branch는 다른 branch의 영향을 받지 않기 때문에, 여러 작업을 동시에 진행할 수 있습니다. branch의 분할을 통해서 분업 후에 추후 설명할 merge로 다시 합치는 작업을 하여 다시 하나의 branch로 병합할 수 있다. branch에 대한 자세한 명령어는 추후에 설명하고 우선 기본 개념만 알고 넘어가도록 하겠다.

Commit 커밋

커밋을 통해 local repo에 생성된 파일 및 폴더를 remote repo에 올릴 수 있다. 아래 구조에서 볼 수 있듯이 저장소, 인덱스, 파일 트리로 나뉘는 데, 작업트리에서 변경된 내용들은 staging이라는 과정을 거치며, 변경되거나, 생성됐다는 기록이 남게 된다. staging된 파일들을 커밋을 하기 위해서는 인덱스에 올려야한다. 인덱스에 올라가 있지 않은 파일들은 commit을 해도 파일이 저장소에 올라가지 않는다. 따라서 인덱스에 올리는 추가적인 작업이 필요하다.

깃 구조

Commit 사용

커밋을 실질적인 사용을 해 볼 것 인데 바로 커밋을 할 수 있는 것이 아니라 전에 설정을 조금 해야한다. CLI로만 작성한다고 한다면 code block만 보고 따라 해도 무방하다. 앞의 순서를 잘 따라왔다면 remote repolocal repo가 생성되어 있을 것이다. 로컬 저장소에서 git bash창을 띄워놓자.

commit 사용해보기

우선 git bash에서 사용할 원격 저장소를 지정해주지 않았다. 그래서 지정해 줄 것인데, 다음과 같은 명령어로 지정 가능하다.

$ git remote add [원격 저장소 이름] [원격 저장소 url]

example:
$ git remote add origin https://github.com/example/example
$ git remote add origin https://github.com/example/example.git

이렇게 작성하면 origin이라는 명칭으로 git bash에 저장소의 위치를 저장하는 것이다. url 입력란의 차이가 .git의 차이인데, 2개 중에 아무거나 써도 상관없다. origin이라고 명명한 이유는 추후에 push할 때의 명칭을 기입하지 않으면 기본적으로 들어가는 명칭이 origin이라서 이렇게 설정해주었다. 다른 이름으로 해도 무방하나 추후 push단계에서 설정한 이름으로 넣어줘야한다.

그 후 local repo에서 변화를 줘서 staging 파일을 만들어 볼 것이다.

image

이렇게 아무 내용도 들어가 있지 않는 txt파일을 하나 제작해주었다. 내용이 있어도 상관없다.

$ touch test.txt

or

파일로 가서 오른쪽 클릭 > 새로 만들기 > 텍스트 파일 선택 > 이름 변경

2개 중 편한 걸로 해도 무방하다.

그 다음에 staging된 파일을 확인해보기 위해서 다음과 같은 명령어를 치게 되면

$ git status

image

이런식으로 아직 추적하지 않는 파일이 빨강색으로 뜨게 된다. 그 후 전술했던 것처럼 커밋을 위해서는 인덱스 파일로 올려야 한다고 하였다. 따라서 인덱스 파일에 올려주기 위해서 다음과 같은 명령어를 쳐서 인덱스 파일에 올려주면 된다.

$ git add [폴더 경로]

example:
$ git add ./test.txt
$ git add .

명령 예제에서 1번째는 하나의 파일만 선택해서 올리는 경우, 2번째 예제는 아직 올라가지 않는 모든 파일을 선택하는 경우이다. 자주 쓰이니 알아두자.

그 후 커밋을 위해 다음과 같은 명령어를 사용한다.

$ git commit -m "치고 싶은 말"

example:
$ git commit -m "first commit"

image

이렇게까지 했다면 커밋을 완료한 것이다. 커밋 이력을 보기 위해서는 다음과 같이 치면 된다.

$ git log

image

하지만 remote repo인 깃허브에는 아무것도 올라오지 않았을 것이다. 이 커밋한 기록들을 깃 허브에 push를 해야 올라가는 것을 확인할 수 있을 것이다.

push

커밋을 하였지만 저장소에 올라가지 않았다는 것을 확인했으니, 이제 push를 통해서 저장소에 올려보도록 하겠다. 명령어 자체는 어렵지 않다. 하기 전에 브랜치의 이름을 변경해보도록 하자

git branch -M main
  • -m: 간단히 설명하자면 현재 branch의 이름을 변경하거나 움직이는 것이다.
  • -M: --move --force이다. 위에꺼에서 강제로 변경 이동하는 옵션값이 들어간 차이다.
$ git push [<원격 저장소 이름>] [브랜치 이름]

example:
$ git push origin main

image

이렇게하면 remote repo에 파일이 올라간 것을 확인할 수 있다.

pull

pullpush와 반대되는 개념이다 push는 업로드를 하는 것이라면 pull는 자신이 정한 repo에서 파일을 다운받는 것이라고 생각하면 된다. 즉 remote repo에 있는 데이터를 local repo로 다운받아서 동기화시키는 과정이라고 생각하면 쉬울 것 같다.

예를 들어서 타인이 코드를 작성해서 같은 remote repo에 올렸다면 자신은 그에 해당하는 코드를 가지고 있지 않을 것이고 추후에 자신이 쓴 코드를 올리려 한다면 아마

image

다음과 같은 오류를 발생시킬 것이다. 한 마디로 자신이 가지고 있는 staging된 파일이 아닌 오리지널 파일과 remote repo에 있는 파일의 구조와 데이터가 같지 않다고 오류가 뜨는 것이다. 이러한 오류를 pull를 통해서 해결하는 것이다.

아까 push와 마찬가지로 한번 사용해 볼 텐데 다른 사람이 올렸다는 것을 가정하기 위해서 깃허브의 remote repo에 들어가서 image 버튼을 눌러 create new file를 누른 뒤 파일을 생성해 줄 것이다. 간단한 실습을 위해서 파일이름은 new.txt 내용은 hello!로 기재 후 하단에 있는 image 버튼을 눌러주었다.

pull 실습을 위함으로 자세한 기재 방식은 생략하도록 하겠다.

image

버튼을 눌러 commit이 완료 되었다면, 아마 다음과 비슷하게 떠있을 것이다.

image

그렇다면 local repo로 들어가서 다음과 같은 명령어를 사용하면

$ git pull [원격 저장소 이름] [브랜치 이름]

example:
$ git pull origin main

image

다음과 비슷한 결과 함께 파일이 생성된 것을 볼 수 있다.

image

clone

clonepushpull과 원격 저장소를 git remote를 통해서 다운 받지 않아도 된다. 그렇기에 다른 사람의 repo에 들어가서 다운 받는데 용이하다. 이미 작성된 타인의 repo에서 자신의 개인 PC 즉 로컬 저장소로 복사해올 때, 다른 사람의 repo로 가서 image 버튼 눌러서

image

위의 사진에서 보이는 url 링크를 복사하고 다음과 같이 명령어를 기입해준다.

$ git clone [url 링크]

image

명령어까지 치면 자신이 git bash를 열었던 폴더에 자신이 복사하고자 했던 repo가 복사 되어있는 것을 확인할 수 있다.

Clone this wiki locally