본문 바로가기
공부/개발 & 컴퓨터

한 번에 끝내는 Git 사용법 (feat. GitHub) - 실전편

by algosketch 2021. 9. 25.

대상 : Git 을 모른다.
목표 : 토이 프로젝트에 Git 사용 가능
VCS : Version Control System
VCS 종류 : Git, Subversion, ...
VCS 는 버전 관리 시스템이고 그 중 가장 많이 쓰이는 것이 Git 이다. 다음 두 가지 경우에 유용하게 사용할 수 있다.

  • 중간 저장 : 현재 상태를 저장한다. 언제든지 현재 상태로 되돌아올 수 있다.
  • 협업 : 다른 사람의 코드를 카카오톡을 통해서 보내지 않아도 된다. 같은 파일을 수정해도 건드린 부분만 확인할 수 있다.

Git 을 사용하기 전 - 3분 (각 컴퓨터에 최초 한 번)

1. Git 설치
Git 을 사용하기 위해서는 Git 을 설치해야 한다. https://git-scm.com/downloads
2. Contributor 설정
자신의 컴퓨터에 Git 을 설치했다. 컴퓨터를 여러 명이 사용하는 게 아니라면 모든 프로젝트에 대해서 같은 설정을 적용할 수 있다. CMD 에 두 가지 명령어를 작성한다.

# name과 email 은 그대로 작성하는 것이 아닌 자신의 것으로 작성한다. 
git config --global user.name "name" 
git config --global user.email "email"

 

프로젝트를 시작할 때 - 3분 (프로젝트 시작할 때 최초 한 번)

1. 내 컴퓨터(local)에 Git Repository(저장소) 만들기

# 원하는 폴더에서 cmd 를 열어준다. 
# 폴더 주소창에 cmd 입력 후 엔터치면 열린다. 
# 아래 명령어 한 줄이면 현재 폴더가 git repository 가 된다. 
git init

해당 폴더에 .git 이라는 이름의 폴더가 생긴다. 이 폴더 안에 기록들이 담긴다. 내용물을 직접 확인할 일은 없다.
2. 원격 저장소(GitHub)에 Git repository 만들기
GitHub 또는 GitLab 처럼 Git 으로 관리하는 프로젝트를 올릴 수 있는 장소를 remote repository 라고 부른다. GitHub 를 호스팅 서비스라고 부르는데, GitHub 사이트에 빈 remote repository 를 만든다.
<대충 GitHub 들어가서 repository 만드는 장면>
3. local repository 와 remote repository 연결하기
GitHub 에서 repository 를 만들었다면 새로운 URL 이 생겼을 것이다. 그 주소를 복사하고 아래 명령어 끝에 추가해 준다.

# origin 은 연결할 때 사용하는 이름이라고 생각하면 된다. 
# 기본적으로 origin 이라는 이름을 사용하지만 변경해도 된다. 
# 하나의 프로젝트에 여러 remote repository 를 연결할 때 주로 바꾸어 사용한다. 
git remote add origin <URL>

1-2. 함께 작업하는 팀원이 이미 remote repository 를 만들었다면?
위의 1~3 생략하고 아래 명령어를 입력하면 된다.

# 프로젝트를 만들고 싶은 폴더로 이동한 후 아래 명령어 입력 
git clone <URL>

이 명령어가 기존의 1, 3 번 역할을 수행한다. 로컬에 생기는 폴더 이름은 remote repository 이름과 같다. Git 을 사용하기 위한 모든 준비를 마쳤다.

Git 사용 방법

여기서는 command line 을 통해 Git 을 사용한다. 또한 명령어에 추가하는 옵션은 내 개인적인 취향이 묻어 있다. 내가 CLI 를 사용하는 이유는 더보기를 눌러 확인할 수 있다.

더보기

CMD 나 터미널을 통해 Git 명령을 내리는 방식을 CLI(Command Line Interface) 라고 한다. 버튼 등을 통해 조작하는 방식은 GUI 방식이라고 한다. CLI 를 이용하면 Git 의 모든 기능을 이용할 수 있지만 GUI 는 그렇지 않다. 또한 CLI 사용 방식은 윈도우, macOS, Linux 등 모든 환경에서 동일하지만 GUI 방식은 Git 을 사용하는 환경, IDE 에 따라 사용 방법이 모두 다르다. CLI 를 주로 사용했던 사람은 GUI 도 쉽게 사용할 수 있지만 그 반대는 불가능하다. CLI 는 키보드에서 손을 떼지 않고 모든 Git 명령이 가능하다. 이와 같은 이유로 나는 CLI 방식을 선호한다.

GUI 방식도 장점이 있다. CLI 방식으로 보는 그래프보다 보기 쉽다. 이전 커밋 타이밍을 놓쳤을 때 특정 파일만 이번 커밋에 포함시키기 쉽다. (CLI 방식을 해당 파일의 경로를 모두 작성해야 한다.)


1. commit (현재 상태 저장)

# 현재 상태를 저장한다. 
git add . 
git commit -m "변경 사항에 대한 설명을 여기에 작성한다."

원래 커밋 메시지는 여러 줄로 작성할 수 있다. -m 옵션을 사용하지 않고 git commit 만 사용할 경우 에디터 창이 뜬다. (기본이 nano 에디터로 알고 있다. git config 에서 변경 가능하다.) 원래 커밋 메시지 작성 컨벤션은 다음과 같다.

간단한 커밋 메시지 

위 한 줄을 비우고 이 커밋에 대한 자세한 설명을 여기서부터 작성하면 된다. 
그런데 나는 -m 옵션을 이용하여 한 줄로만 작성한다. 
원래 하나의 커밋 단위는 그렇게 크지 않다. 
간단한 작업이라면 10분 이내에 두 개이상의 커밋을 작성하는 경우도 있다. 
한 줄로 설명이 가능한 단위만큼 개발했다면 커밋한다. 
커밋 메시지가 두 줄이 넘어간다면 두 개의 커밋으로 나눌 수 있지는 않은지 생각해볼 수 있다.

2. pull (다운로드)

# 만약 누군가가 프로젝트를 변경했다면 로컬에 있는 파일들을 업데이트 한다. 
git pull

3. push (업로드)

git push 

# 만약 push 에 실패했을 때 나오는 메시지 중에 set, upstream 과 같은 단어가 포함되어 있다면? 
# 메시지에 적혀 있는 명령어를 그대로 작성한 뒤 다시 git push 하면 된다.

4. log (지난 기록들)

# --oneline 옵션은 각각의 커밋을 한 줄만 표시하겠다는 의미이다. 
# 만약 --oneline 옵션을 주지 않으면 각각의 커밋이 자세하게 나온다. 
# 그런데 로그를 확인할 때 nano 나 vi 같은 에디터를 통해 보여주기 때문에 q 을 입력하여 빠져나와야 한다. 
# q 를 입력해? 빠져나와? 이해가 안 된다면 git log 를 쳐 보면 알게 된다. 
# -3 옵션은 커밋 로그를 가장 최근 3개만 보겠다는 의미이다. 
git log --oneline -3

5. .gitignore (git 이 추적하지 않을 파일 설정)

# root directory 에 .gitignore 라는 파일을 만든다. 
# 작성 예시는 아래와 같다. 

node_modules/ 
.env 
.idea

# 주로 포함되는 내용들 
# 원격 저장소에 올라가기에 너무 무거운 파일 (node_modules 등) 
# 공개된 장소에 올라가면 안 되는 민감한 정보 (비밀번호, api token) 
# 본인의 PC 에서만 사용하는 개인 설정 (.idea)


.gitignore 는 명령어는 아니지만 기본적인 내용이라 포함했다.
지금까지 기본적인 Git 명령어에 대해서 살펴봤다. 위의 명령어만 알아도 프로젝트에서 상태를 저장해 가며 프로젝트를 진행할 수 있다. 현재 상태를 저장하고, 올리고, 다운받고... 사실 정말 기본적인 명령어임에도 설명하지 않는 것들이 있다. 커밋할 때 사용한 git add . 명령어와 git status 이다. 이 명령어를 설명하려면 이론적인 내용이 필요하다. 다음 글에서 이 내용을 확인해 보자.