8 minute read

Git 설치와 GitHub 사용 방법에 대해 살펴본다.

  • 본 포스팅은 세미나를 위한 자료입니다. 무단 복제 및 도용을 원칙적으로 금합니다.
    This material is for educational uses only. Some contents are based on the material provided by other paper/book authors and may be copyrighted by them.
    • © 2022 Lee Jae Won. Powered by Jekyll & Minimal Mistakes.
    • © 2022 Sanghuyn Park. Powered by Jekyll & Minimal Mistakes.
    • Copyright (C) 2022. All right reserved by Robotics Club BARAM.

  • 주저자(lead-author) : Jaewon Lee
  • 공동저자(co-author) : Sanghyun Park


Git과 GitHub에 대해

  • Git
    • 오픈 소스 버전 관리 시스템(VCS: Version Control System)
    • 로컬에서 코드 및 버전 관리
    • 텍스트 명령어 입력 방식
  • GitHub
    • 소프트웨어 개발 플랫폼 및 소스코드 호스팅 서비스
    • Git을 통한 저장소 호스팅을 지원
    • GUI 제공
    • 영리적인 서비스와 오픈소스를 위한 무상 서비스 모두 제공


장점

먼저 깃허브를 사용하고자 하는 이유(장점)를 알아보자.

깃허브를 비유하자면 본인은 코딩하는 사람들의 인스타그램이라고 비유하기도 한다.

깃허브는 국내외 사용자들이 본인들의 프로젝트를 올리고, 다른 프로젝트에 잘못된 기능을 고치는 일에 기여하거나 더 좋은 코드를 만들고자 할 수 있는 하나의 플랫폼이다.(대규모 커뮤니티이다. 개발자 중 GitHub를 모르는 사람이 있을 지 잘 모르겠다.)

이러한 궁극적인 작업말고도 저장소의 용도로 본인의 코드를 꾸준히 올리면 수정과 구현의 과정이 남겨지기도 하고, 로컬에서만 관리하는 것보다 버전 관리나 원격에서의 보관이 가능하다는 장점이 있다.

유명한 논문의 코드나 본인 관심사의 유저들을 팔로우하거나 repository에 star를 달며, 내가 어떤 사람에게 관심있는지 어떤 코드를 좋아요 했었는지를 남길 수도 있다.

또한, 관련 분야라면 기업에서 깃허브 주소를 요구하는 경우도 있다고 한다.

단점

  • 로컬과 원격의 개념과 상태를 맞추는 것에 어려움을 느낄 수 있다.
  • Git을 사용하는 것이 다소 직관적이지 않고 어려워 접근성이 좋지 않다.
  • 검증된 소스 코드와 그렇지 않은 소스 코드를 분류하고 찾는 것이 힘들 수 있다.
  • 오픈 소스 플랫폼이지만 모든 코드가 오픈되어 있지 않고, LICENSE에 대해 조심해야하는 경우도 있다.

Git 설치 방법 (Windows 기준)

Git 설치 방법에 대해 알아보자.

사실 크게 중요한 것은 없지만, 천천히 살펴보자.

  • 구글에 Git을 검색 후 첫번째 링크로 들어간다.


  • 어려울 것 없이 Download for Windows를 클릭해준다.


  • Standalone Installer에서 64bit를 다운 받는다.


  • 다운받은 .exe파일을 실행한다


  • 설치 과정은 단순히 Install만 해주면 된다.


  • 설치 완료 후 바탕 화면에서 오른쪽 마우스를 눌러 다음과 같이 Git Bash Here이 뜨는지 확인한다.


GitHub 회원 가입

GitHub 링크 : https://github.com/

  • 위 링크에 들어가면 아래와 같은 화면이 나온다.

  • 위 빨간색 화살표로 표시된 Sign UP을 누르면 회원가입 페이지로 이동하게 된다.

  • 각 정보들을 입력하면 된다.
    • 주의! Username은 나중에 바꿀 수 있지만, 바꾸게 되면 귀찮아 지는 일이 많이 생기므로 되도록 안바꾸도록 이름을 정하는게 좋다.

  • 위의 정보들을 다 입력하면 아래와 같이 인증하는 페이지가 나온다.

  • 이메일로 인증번호가 오고, 입력하면 된다.
    위 과정을 모두 마치면 회원가입이 완료된다.

  • 다시 처음 페이지로 돌아가면 아래와 같은 화면이 뜨고, 빨간색 화살표 표시가 된 Sign in을 누르면 로그인 페이지가 나온다.

Git 초기 설정

Git을 설치하고 나서 사용자의 이름과 이메일 주소를 설정하는 것을 가장 먼저 해야한다.

그 이유는 Local에 있는 코드를 GitHub에 업로드 할때 이 정보를 이용하기 때문이다.

사용자의 이름과 이메일 주소는 GitHub 회원가입 할때 사용하였던 Username과 이메일이다.

우선, Git Bash를 실행 해봅시다. 바탕화면에서 우클릭 후 ‘Git Bash Here’클릭
그 다음, 아래 명령어를 입력해 현재 설정을 보자.

$ git config --list

아직 사용자이름과 이메일 주소에 관한 내용들이 없는 것을 확인할 수 있다.

아래 명령어를 통해 사용자의 이름과 이메일 주소를 설정해보자.

$ git config --global user.name (사용자의 username)
$ git config --global user.email (사용자의 이메일)

예시는 아래와 같다.

$ git config --global user.name SanghyunPark01
$ git config --global user.email pash0302@naver.com

설정하고 난 후 다시 설정을 확인하면
아래와 같이 사용자의 이름과 이메일이 설정된 것을 확인할 수 있다.



Repository 생성

GitHub에 소스코드를 업로드 하기 위해선 먼저 하나의 저장소인 Repository를 생성해야 한다.

GitHub에서 Repository 생성하기

  • GitHub에 로그인 후 우측 상단을 클릭해 Your repositories에 들어간다.


  • 다시 우측 상단의 New를 클릭해준다.


  • 그 다음, repository에 대한 설정하는 화면이 나온다. 먼저 repository 이름을 설정해준다.

repository name은 특수 기호, space는 사용이 불가능 하지만, - , _와 같은 기호들은 사용이 가능하다.

  • 그 다음은, Description과 공개 설정이다.

Description의 작성여부는 자유다.
공개설정의 경우 Public의 경우 공개, Private의 경우 비공개이다.
튜토리얼을 위해 우선 이름과 공개여부는 위처럼 설정하자.

  • 마지막으로 Initialize에 관한 부분이다.

나중에 설명할 것이므로 우선 Add a README file만 체크 후 초록색 버튼을 클릭하면 아래와 같이 나타난다.



Local에 있는 코드 GitHub에 업로드하기


이제 내 저장소에 있는 코드를 GitHub Repository에 올려보자.

본인은 다음과 같은 코드들이 있는 파일에서 원격 저장소에 올려보겠다.


git init

먼저 내가 올릴 프로젝트가 있는 상위 경로에 .git파일을 추가해줘야한다.

.git 파일은 git 사용과 관련된 파일이 있다고 하는데 우리가 직접적으로 다루는 파일이 아니다.

맨 처음에 생성해줘야 하는 만큼 명령어도 초기화의 의미(init)를 가지고 있다.

  • 먼저 내가 올릴 프로젝트의 상위 경로에서 오른쪽 마우스를 클릭하고, Git Bash Here를 클릭하자.


  • 아래 명령어를 입력하자.
    $ git init
    


그러면 아래 사진과 같이 숨겨진 파일로 생성된다. 보이지 않는다면 파일 상단의 보기에서 숨긴 항목에 체크하자.


remote 설정

이제 내가 어느 repository에 파일을 올릴 지 설정해주어야 한다.

먼저 내가 올릴 repository에서 다음과 같이 주소를 복사해오자.


다시 git bash에서 다음 명령어를 이용해 어디로 올릴 지 설정해준다.

git remote add origin <repository 주소>

git remote add origin https://github.com/Lee-JaeWon/github_practice.git

잘 되었는지 확인하는 방법은 다음과 같다.

git remote -v

만약 주소를 잘못 적었다면, 당황하지 말고 지우고 다시하면 된다.
지우는 명령어는 아래와 같다.
add에서 rm으로만 바뀐 것을 볼 수 있다.

지우기
git remote rm origin

다시
git remote add origin <주소>

origin의 의미

origin의 의미를 이 포스팅에서는 굳이 자세히 다루지 않겠다.

단순히 repository를 가리키기 위해 기본적으로 사용하는 이름이다.

git pull

현재 내 repository와 로컬의 상태가 맞지 않는다.

무슨 말이냐면, 내가 지금 로컬에서 업로드할 파일이 아닌 다른 파일들의 상태가 맞지 않다는 말이다.


이 상태를 반드시 맞추고, 업로드를 해야 한다. 이를 위한 명령어는 다음과 같다.

git pull origin [브랜치이름]

git pull origin main

브랜치 변경

git pull을 진행할 때, 브랜치 이름을 main이라고 하고, pull을 진행하였다.

그 이유는 먼저, 처음 respository를 생성하면, 기본 branch는 main으로 설정된다.


브랜치는 버전 관리를 하거나 pull request를 할 때 사용된다.
브랜치에 대해서는 따로 포스팅을 해야할만한 내용이라 이 포스팅에서는 다루지 않고,
우리는 main 브랜치에서만 작업을 할 것이다.

git bash에서 현재 업로드를 하려고 하면, 브랜치이름이 master로 되어있을 것이다.

우리가 pull도 main에서 하고, repository도 main이니, 업로드 또한 main에서 할 수 있도록 브랜치를 변경해보자.

명령어는 다음과 같다.

git branch -m main

결과는 아래와 같아야 한다.



(VScode나 다른 IDE에서 git을 사용하면 친절하게 master인지 main인지 나와있지 않을 수도 있으니 초기 설정 때 주의해야한다.)

업로드

드디어 업로드를 할 차례가 되었다.

실제로 git을 사용하면서 제일 많이 사용하는 부분은 이 내용이다.

업로드하기 위한 과정은 총 3가지이다.
add -> commit -> push


위 그림을 살펴보면서 하면 이해가 될 것이다.

먼저 git add <경로/파일.py>는 파일을 올리기 위한 준비를 한다고 생각하면 된다.

git commit은 준비가 된 파일들이 무슨 이유로 올리는지 혹은 무엇인지 코멘트를 달아주는 용도라 볼 수 있고,
커밋을 진행해야 실제로 업로드를 할 수 있다.

git push를 실제로 repository에 업로드를 해준다.

그래서 업로드 하기 위한 명령어 3개는 아래와 같다.

git status

git add .   # 전체를 업로드
or
git add file/temp.py  # 원하는 파일만 업로드

git commit -m "first commit"

git push origin main

git status를 자주 확인하며 올리는 것이 좋다.

위 명령어들을 입력하면 다음과 같이 될 것이다.




위 과정처럼 되면 잘 업로드가 된 것이며, repository에서 확인할 수 있다.

git clone vs git pull

git clonegit pull 모두 원격에 있는 코드를 가져온다는 것은 동일하지만 명백한 차이가 있다.

이미 깃허브를 충분히 사용해 봤다면 무리해서 이 둘에 대해 설명하지 않아도 상황에 따라 잘 사용하지만,
처음 써본다면 원격에 올리는 것부터 해서 이것을 다시 로컬로 가져와 상태를 맞추고 어쩌구 하는게 많이 헷갈릴 것이다.

하나씩 살펴보자.

git clone

git clone은 간단하게 말해 원격 저장소에 있는 코드 전체를 로컬로 다운 받아 오는 것이다.

이 기능은 내가 현재 뭔가 작업 중인 저장소에 사용하는 것이 아니라 처음 코드들을 다운받아올 때 사용한다.


git pull

그렇다면 git pull은 뭐가 다를까?

사실상 저장소 관리에 초점을 맞춘다면 git pull을 훨씬 더 많이 사용할 것이라 예상한다.

아래 그림들을 예시로 들어보겠다.


로컬에서 만든 프로젝트를 이전에 원격 저장소에 올렸었다고 하자.
그런데, 예시로 내가 원격에서 README.md 파일을 수정했다고 하자.

그러면 현재 내 로컬의 상태와 원격 저장소의 상태가 맞지 않는다.

이 때, 그냥 로컬에서 원격으로 add-commit-push를 통해 파일을 올리고자 하면, 로컬과 원격의 상태가 맞지 않아 오류가 발생한다.

이 때, 사용하는 것이 git pull이라고 이해하면 편할 것 같다.



결론

git clone은 프로젝트 전부를 처음가져올 때 사용하고,

git pull은 원격 저장소의 내용을 현재의 브랜치와 병합해준다.
즉, 수정본에 대해 로컬과 원격을 맞춰줄 때 사용한다.

계속 사용해보며, 이 둘의 차이를 알아야 할 것이다.

원격과 로컬이 맞지 않을 때 아마 아래와 같은 과정을 거칠 것이다.

git pull origin main # main branch, git pull로 먼저 상태를 맞춰준다.

git status

git add <files>

git commit -m "edit"

git push origin main



README.md 와 .gitignore 에 대해

README.md에 대해

먼저 .md파일은 마크다운(markdown) 이라는 문법 형식에 따라 작성하는 파일이다.

README.md도 마찬가지로 마크다운으로 작성하는 하나의 파일에 불과하지만, 이는 특별한 성격을 가지게 할 수도 있다.

먼저 repository의 가장 상위 루트에 README.md가 존재한다면 이는 그 repository의 설명서 격이 되는 기능을 가진다.
즉, 아래 사진처럼 repository를 설명할 수 있게 된다.


이름이 정확히 README.md가 아니라면 다음과 같이 나타나지 않고, README 파일을 추가해보는 것이 어떠냐 문구가 뜨게 된다.



이 포스팅에서는 마크다운 문법을 따로 다루진 않지만, 구글에 검색해보면 쉽게 알 수 있으며, 쉽고 간단하게 작성할 수 있어 강력한 도구라 볼 수 있다.

GitHub 프로필

GitHub 프로필도 마찬가지로 README.md로 작성하게 된다.

GitHub 프로필 제작 방법은 본인 GitHub 이름과 같은 repository를 만들게 되면 special repository라고 뜨며 GitHub 프로필의 역할을 수행한다.

여기서도 마찬가지로 상위 루트에 README.md파일을 추가하면 프로필을 마크다운 형식으로 작성할 수 있다.





이는 꼭 repository의 상위 루트뿐만 아니라 다른 repository내 다른 폴더안에서 상위에 있는 README.md 또한 같은 기능을 수행하니 폴더마다 설명이 필요하다면 유용하게 사용할 수 있을 것이다.

본인의 마크다운으로 작성한 GitHub 프로필 예시는 여기서 확인할 수 있다.

.gitignore에 대해

사용 이유

결론부터 말하자면 .gitignore란 원하지 않는 파일을 GitHub Repository에 올리지 않도록 미리 설정해 주는 것이다.

예를 들어, C언어로 만든 Visual Studio 프로젝트를 GitHub Repository에 올리고자 할 때, main.c 파일만 올리고 싶다.
이때, 단순히 git add 경로/main.c 로 단 하나의 파일만 add 해주고, commit 하고 push 할 수도 있다.

하지만 폴더가 여러 개이고, 프로젝트가 여러 개일 때 거기서 원하는 파일만 일일이 add 해주는 건 상당히 귀찮은 작업이 될 가능성이 있다.
그래서 우리는 git add .를 통해 모든 파일을 올린다고 했을 때, 원하지 않는 파일은 알아서 업로드되지 않도록 하는 기능을 수행하는 것이 .gitignore이다.

사용 방법을 알아보자.

.gitignore 파일 작성

보통 본인은 repository 생성 직후, README.md와 함께 .gitignore를 바로 생성한다.
그렇다면 .gitignore 는 어떻게 작성해야하는가? 보통 이 파일안에 확장자를 작성해주는데, 우리가 또 번거롭게 이것을 모두 입력하고 있을 필요는 없다.

본인은 https://www.toptal.com/developers/gitignore/에서 .gitignore를 자동으로 작성해와서 사용한다.


예시를 위해, VScode와 visual studio, python, c++, linux를 모두 사용하는 중대한(?) 프로젝트라고 하자.

위 사진처럼 그냥 내가 사용하는 언어나 IDE를 입력해준 후 생성만 눌러주면 알아서 gitignore.io 파일을 작성해준다.


위 사진처럼 작성되며, .obj, .dll파일처럼 makefile들을 알아서 걸러준다.

Repository 적용

그럼 이제 잘 만들어진 .gitignore 파일을 repository에 적용하자.
적용 기준은 방금 막 만든 repository에 README.md 파일만 있는 상태라고 하자.

이미 만들어진 repository에 추가할 수도 있지만, 파일 업로드 하기전 .gitignore 파일을 추가해 앞으로 할 업로드에서 불필요한 파일은 안올라가도록 하겠다.

  • 아래 사진에서도 .gitignore 파일을 생성할 수 있지만 따로 추가하는 방법을 설명하겠다.


  • 먼저, README.md 파일만 있는 repository이다.


  • Create new file을 선택해준다.


  • 파일 이름을 .gitignore로 설정해준다.
    앞에 .를 꼭 잘 써주도록 한다.



  • 하단에서 Commit new file을 눌러 파일을 올린다.


  • 파일이 업로드된 모습이다.


이제 git에서 git pull을 진행해 로컬과 github의 상태를 맞춰주고, git status를 통해 내가 원하지 않는 파일이 status에 뜨지 않는지 확인하고, 원래처럼 add-commit-push를 진행하면 된다.

📣
본 포스팅의 언어 및 개발 환경 : Windows10
포스팅에 대한 오류나 궁금한 점은 Comments를 작성해주시면, 많은 도움이 됩니다.💡

Leave a comment