-
Notifications
You must be signed in to change notification settings - Fork 1
01_03.Using_Github
Github
와 Git
을 사용하여 자신이 만든 프로젝트를 올리거나, 다른 사람들이 올려둔 프로젝트를 깃허브 리포지토리repo
에서 받는 등 다양하게 시도 해보도록 하겠다.
$ git init
$ git add [파일 이름]
$ git commit -m "커밋 내용"
$ git branch -M [<이전 이름>] [바꿀 이름]
$ git push [remote 이름] [원격 저장소 브랜치 이름]
$ git pull [remote 이름] [원격 저장소 브랜치 이름]
$ git clone [url 링크]
요약을 통해서 코드를 배우는 것도 좋지만 이 명령어를 처음 본다면 꼭 아래있는 내용을 정독하길 바란다.
튜토리얼1 Git의 기본
이번 장은 GUI
가 아닌 CLI
로 진행하는 점 유의하길 바란다.
만약 설치가 안되어 있다면 아래의 과정을 따라와주길 바란다.
git
설치 방법
git
이 다운이 안되어있다면 다운을 받아야한다.
깃 홈페이지에 들어가보면 download
라는 버튼이 가운데에 있다. 눌러서 사용하는 운영체제에 맞게 받아주도록 하자.
다운 받은 후 실행 시킨 후 다운 받아주도록 하자.
다 받았다면 이렇게 뜨는 것을 확인할 수 있다.
혹 wsl를 사용하고 있다면, 다음과 같이 입력 후 다운 받으면 된다.
$sudo apt install git
부연 설명이긴 하지만, apt-get
과 apt
차이는 다음과 같다.
- apt는 보기좋은 진행률 표시
- apt는 업그레이드해야 하는 패키지 목록 나열
- apt는 apt-get, apt-cache 및 dpkg -l의 기능 결합
- apt 및 apt-get 명령의 구문 비교
- 새로운 명령어
다운 후 wsl 경우 다운이 되었는지 다음과 같이 쳐서 확인해보자.
$git --version
위의 깃 다운과 마찬가지로 github의 회원가입이 안되어 있는 독자는 깃허브를 반드시 회원가입하길 바란다.
github
회원가입
이 글을 읽고 있다면 깃허브의 사용이 아예 처음일 것이라는 생각이 들어 약간의 설명을 더 주고자 한다. 일반 깃허브 무료 이용자의 경우 깃허브의 혜택을 받지 못하는 경우가 있는데 만약 대학교를 다닌다면 학생 인증을 하도록 하자. 자세한 사항은 여기를 통해 확인해보자.
깃허브 사이트에 들어가서 우측 상단에 있는 sign up
를 눌러 회원가입을 해준다.
들어간 뒤 이메일 비밀번호등 기입란에 기입하고 진행하여 회원가입 해주면 된다.
이렇게 다 회원가입 및 git이 다운이 되어있다는 가정으로 이제 작성을 하도록 하겠다.
깃의 다운이 끝나면 아마 폴더에 오른쪽 클릭하면 다음과 같이 창에서 git bash
와 git gui
가 생성될 것이다.
추후에 쓸 것이니 일단은 넘어가도록 하자.
저장소(Git repository)란 말그대로 파일이나 폴더를 저장해 두는 곳이다. 같은 이름의 파일일지라도 데이터의 변형이 일어나면 변경 이력에 남는다.
이제 깃허브 저장소 호스팅에 대해서 설명하도록 하겠다. 우선 저장소의 생성이 필요하기 때문에 github
홈페이지에서 저장소 생성을 해줘야 한다. 저장소의 분류를 하자면 2가지로 나눌 수 있는데 각각 remote
와 local
로 구분할 수 있다.
- 원격 저장소(Remote Repository): 여러 사람들이 같이 사용할 수 있는 공용 저장소
- 로컬 저장소(Local Repository): 내 PC에 파일이 저장되는 개인 전용 저장소
이하 remote repo
이렇게 좌측 상단 쪽에 보이는 버튼이나
우측 상단에 보이는 +
버튼을 누르면 new repository
라는 버튼이 보일 것이다. 이를 repository
라는 저장소를 생성하게 된다. 버튼을 누르게 되면 다음과 같은 창이 뜨게 되는데 자세한 것은 추후에 설명하고 여기서는 간단히 *
표시 된 내용만 기입하고 생성한다. 여기서 repo
이름을 기입할 때는 자신이 알아 볼 수 있는 이름으로 설정하여 기입하고, 띄어쓰기는 -
로 변경되어 채워지니 유의하여 작성하도록 한다.
이하 local repo
개인 컴퓨터의 로컬 저장소를 생성하기 싶다면 특정 폴더에서 오른쪽 클릭한다.
그 후 git bash
를 선택하며 다음과 같은 창이 뜬다.
이러한 방식으로 나중에 깃 폴더로 초기화 싶은 폴더에서 오른쪽 클릭하여 초기화 시킬 예정이다.
$ git init
명령어를 사용하면 그에 맞는 폴더가 생성하게 되는데 그 폴더의 이름은 .git
이거나 확인 할 수 없을 것이다.
그 이유가 바로 파일 탐색기에 있는 설정에 달려있는데 파일 탐색기에 숨긴 항목이 체크가 해제 되어 있다면 보이지 않을 수 있다.
따라서 파일 탐색기에 있는 숨김 항목을 체크 하여 확인해본다.
윈도우에서 서두에
.
이 붙은 경우 숨긴 항목이라고 인식하여 숨기게 된다.
이렇게 깃에 대해 초기화가 됐으면 local repo
폴더라는 선언을 하게 되는 것이다.
여러 명령어를 사용하기전에 branch
에 대한 내용을 집고 넘어 가야한다.
branch
는 독립적으로 어떤 작업을 진행하기 위한 개념이다. 간단히 생각하면 릴리스와 개발의 분업화, 작업 영역을 분할시킬 수 있는 개념이라고 생각하면 된다. 필요에 의해 만들어지는 각각의 branch
는 다른 branch
의 영향을 받지 않기 때문에, 여러 작업을 동시에 진행할 수 있습니다. branch
의 분할을 통해서 분업 후에 추후 설명할 merge
로 다시 합치는 작업을 하여 다시 하나의 branch
로 병합할 수 있다. branch
에 대한 자세한 명령어는 추후에 설명하고 우선 기본 개념만 알고 넘어가도록 하겠다.
커밋을 통해 local repo
에 생성된 파일 및 폴더를 remote repo
에 올릴 수 있다. 아래 구조에서 볼 수 있듯이 저장소
, 인덱스
, 파일 트리
로 나뉘는 데, 작업트리에서 변경된 내용들은 staging
이라는 과정을 거치며, 변경되거나, 생성됐다는 기록이 남게 된다. staging
된 파일들을 커밋을 하기 위해서는 인덱스에 올려야한다. 인덱스에 올라가 있지 않은 파일들은 commit
을 해도 파일이 저장소에 올라가지 않는다. 따라서 인덱스에 올리는 추가적인 작업이 필요하다.
커밋을 실질적인 사용을 해 볼 것 인데 바로 커밋을 할 수 있는 것이 아니라 전에 설정을 조금 해야한다. CLI
로만 작성한다고 한다면 code block
만 보고 따라 해도 무방하다. 앞의 순서를 잘 따라왔다면 remote repo
와 local repo
가 생성되어 있을 것이다. 로컬 저장소에서 git bash
창을 띄워놓자.
우선 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
파일을 만들어 볼 것이다.
이렇게 아무 내용도 들어가 있지 않는 txt파일을 하나 제작해주었다. 내용이 있어도 상관없다.
$ touch test.txt
or
파일로 가서 오른쪽 클릭
> 새로 만들기
> 텍스트 파일
선택 > 이름 변경
2개 중 편한 걸로 해도 무방하다.
그 다음에 staging
된 파일을 확인해보기 위해서 다음과 같은 명령어를 치게 되면
$ git status
이런식으로 아직 추적하지 않는 파일이 빨강색으로 뜨게 된다. 그 후 전술했던 것처럼 커밋을 위해서는 인덱스 파일로 올려야 한다고 하였다. 따라서 인덱스 파일에 올려주기 위해서 다음과 같은 명령어를 쳐서 인덱스 파일에 올려주면 된다.
$ git add [폴더 경로]
example:
$ git add ./test.txt
$ git add .
명령 예제에서 1번째는 하나의 파일만 선택해서 올리는 경우, 2번째 예제는 아직 올라가지 않는 모든 파일을 선택하는 경우이다. 자주 쓰이니 알아두자.
그 후 커밋을 위해 다음과 같은 명령어를 사용한다.
$ git commit -m "치고 싶은 말"
example:
$ git commit -m "first commit"
이렇게까지 했다면 커밋을 완료한 것이다. 커밋 이력을 보기 위해서는 다음과 같이 치면 된다.
$ git log
하지만 remote repo
인 깃허브에는 아무것도 올라오지 않았을 것이다. 이 커밋한 기록들을 깃 허브에 push
를 해야 올라가는 것을 확인할 수 있을 것이다.
커밋을 하였지만 저장소에 올라가지 않았다는 것을 확인했으니, 이제 push
를 통해서 저장소에 올려보도록 하겠다. 명령어 자체는 어렵지 않다. 하기 전에 브랜치의 이름을 변경해보도록 하자
git branch -M main
- -m: 간단히 설명하자면 현재
branch
의 이름을 변경하거나 움직이는 것이다. - -M: --move --force이다. 위에꺼에서 강제로 변경 이동하는 옵션값이 들어간 차이다.
$ git push [<원격 저장소 이름>] [브랜치 이름]
example:
$ git push origin main
이렇게하면 remote repo
에 파일이 올라간 것을 확인할 수 있다.
pull
은 push
와 반대되는 개념이다 push
는 업로드를 하는 것이라면 pull
는 자신이 정한 repo
에서 파일을 다운받는 것이라고 생각하면 된다.
즉 remote repo
에 있는 데이터를 local repo
로 다운받아서 동기화
시키는 과정이라고 생각하면 쉬울 것 같다.
예를 들어서 타인이 코드를 작성해서 같은 remote repo
에 올렸다면 자신은 그에 해당하는 코드를 가지고 있지 않을 것이고 추후에 자신이 쓴 코드를 올리려 한다면 아마
다음과 같은 오류를 발생시킬 것이다. 한 마디로 자신이 가지고 있는 staging
된 파일이 아닌 오리지널 파일과 remote repo
에 있는 파일의 구조와 데이터가 같지 않다고 오류가 뜨는 것이다. 이러한 오류를 pull
를 통해서 해결하는 것이다.
아까 push
와 마찬가지로 한번 사용해 볼 텐데 다른 사람이 올렸다는 것을 가정하기 위해서 깃허브의 remote repo
에 들어가서
버튼을 눌러 create new file
를 누른 뒤 파일을 생성해 줄 것이다.
간단한 실습을 위해서 파일이름은 new.txt
내용은 hello!
로 기재 후 하단에 있는
버튼을 눌러주었다.
pull
실습을 위함으로 자세한 기재 방식은 생략하도록 하겠다.
버튼을 눌러 commit
이 완료 되었다면, 아마 다음과 비슷하게 떠있을 것이다.
그렇다면 local repo
로 들어가서 다음과 같은 명령어를 사용하면
$ git pull [원격 저장소 이름] [브랜치 이름]
example:
$ git pull origin main
다음과 비슷한 결과 함께 파일이 생성된 것을 볼 수 있다.
clone
는 push
와 pull
과 원격 저장소를 git remote
를 통해서 다운 받지 않아도 된다. 그렇기에 다른 사람의 repo
에 들어가서 다운 받는데 용이하다.
이미 작성된 타인의 repo
에서 자신의 개인 PC 즉 로컬 저장소로 복사해올 때, 다른 사람의 repo
로 가서
버튼 눌러서
위의 사진에서 보이는 url 링크를 복사하고 다음과 같이 명령어를 기입해준다.
$ git clone [url 링크]
명령어까지 치면 자신이 git bash
를 열었던 폴더에 자신이 복사하고자 했던 repo
가 복사 되어있는 것을 확인할 수 있다.
- 오픈 소스 소프트웨어란?
- Git과 버전 관리 시스템
- GitHub를 이용한 저장소 호스팅
- 프로젝트의 기여 및 관리
- 라이브러리 소개
- 개발 환경 구축
- 첫 번째 프로그램
- 게임 창과 커서 관리
- 프레임, 시간과 타이머
- 픽셀, 선분과 기본 도형
- 마우스와 키보드 입력
- 벡터 글꼴과 비트맵 글꼴
- 이미지와 텍스처의 사용
- 카메라와 렌더 텍스처
- 충돌 감지와 충돌 해결
- 효과음과 음악 재생
- 그 외 유용한 함수