저번에 python 으로 만든 간단한 게임들을 나의 github repository 에 넣어보며 오늘은 간단히 Git 과 Github 에 대해 알아보겠다.
이번 주제를 다루며 핵심적으로 알아야 할 개념은 Git 과 Github 의 차이이다.
기본적으로 Git 과 Github 은 다르다.
- Git: Version control program that allows developers to track changes in their code.
- Github: A web-based hosting service for git repositories.
즉, Git 은 코드의 변경점을 틈틈이 확인하기 위해 이용하는 프로그램인데 반해, Github 은 코드를 저장할 수 있는 원격 저장소 (remote repository) 를 Git 에게 제공하는 웹 서비스이다.
나의 Github 으로 이동하여 위의 메뉴에서 Repositories 를 새로 만들면 된다.
이 때 다음과 같이 Repository 이름을 정한 후 README 또한 add 해준다면 해당 repository 에 대한 설명을 a simple plain text file 로 첨부할 수 있고, 이는 권장되는 바이다. 참고로 repository 이름에 관한 naming convention 또한 존재한다. 이전 글에서 소개한 규칙을 적용하여 간단히만 얘기하자면, 모두 lowercase 에 dash(-) 로 연결되어 있는 kebab case 를 쓰도록 하자.
원격 저장소를 만들었다면 다음의 schematic representation 을 참고하여 직접 파일을 올려 볼 것이다.
중간 중간 git status 를 이용해 파일들의 상태를 확인하며 진행해보자.
(1) Add: "이런 이런 파일들을 commit 할거야, 즉 stage 에 올릴거야"
(2) Commit: "Stage 에 올라온 얘네들을 commit 단위로 만들거야"
(3) Push: "Commit 단위의 얘네들을 repository 에 올릴거야"
우선 웹에 생성된 repository 를 나의 local computer 로 가져오기 위해 git clone 을 이용한다. 터미널을 실행시킨 후 desktop 을 destination 으로 하여 아래의 command 를 작성하자.
git clone <Repository address>
이 때, repository address 는 다음처럼 해당 저장소에 들어가 복사해오면 된다.
결과적으로, desktop 에 내가 정한 repository 이름의 폴더가 생길 것이고, 이 폴더는 원격 저장소가 어디에 있는지를 알고 있다. 하지만 주의해야 할 점은 이 폴더에 내가 파일을 가져다 넣었다고 해서 원격 저장소에 저절로 upload 되는 것이 아니라는 것이다. 그렇다면 open 을 이용해 폴더를 열어보자.
open <file name> 또는 open . # . 은 all 을 의미 # ~ 는 user 의 home directory 를 의미
내가 stage 에 올릴 파일들을 더하는 작업이다. git status 를 참고하자. 그렇다면 Untracked files 에서 Changes to be committed 로 이동한 파일들이 stage 에 올라갔음을 알 수 있다.
git add <filename>.py
만약 Unstaging 을 하고 싶다면 다음과 같이 파일을 restore 해주면 된다.
git restore --staged <file>
최종적으로 repository 에 파일들을 올리기 위해서는 commit 이라는 "단위"를 생성해야만 한다.
git commit -m "<message>"
이 때 message 에 해당 파일에 관한 설명을 적으면 앞서 봤던 것처럼 이후 repository 에서 파일 옆에 간단하게 description 이 붙는다.
올릴 파일들을 commit 으로 바꿨다면 이제 push 하여 원격 저장소에 넘기면 된다!
git push
마지막으로 파일을 실행시키기 위해 local computer 자체에는 필요하지만 repository 에 올릴 때는 필요하지 않은 파일들을 처리할 수 있는 gitignore 에 대해 잠깐 알아보려 한다.
이처럼 프로젝트에 불필요한 파일들을 손쉽게 분류해주는 사이트를 이용하면 매우 편하다. 검색창에 macOS 를 치면 아래과 같이 macOS 에는 필요하지만 그 외에는 불필요한 파일들을 알려준다.
따라서 desktop 의 repository 에서 .gitignore 라는 파일을 만들어 아래의 파일들을 복사 붙여넣기 해준다면 다음처럼 .gitignore 이 터미널에 등장하며, 이는 불필요한 파일들을 한 곳에 모아져 있는 곳이다.