본문 바로가기
Coding

Git 사용법

by SoongE 2021. 4. 12.

학교에서 수업을 들으면서 git 사용을 어려워하시는 분들이 종종 보여서 이번 기회에 한번 깃 사용법에 대해 작성해보려고 합니다. 저도 사용하는 기능만 사용하고 능숙하지는 않아서 부족한 부분도 있고 틀린 부분도 있을 수 있습니다. 틀린 부분이 있다면 말해주세요!

 

이번 글에서는 깃 status, stage, add, commit, push, clone, log 등에 대해 이야기해볼 예정입니다.

 

Git 설치

먼저 설치부터 해야겠죠? 깃 홈페이지에 들어갑니다. 아래 사진을 보시면 윈도우 기준으로 다운로드할 수 있는 버튼이 있을 거예요! 이걸 눌러서 다운로드하고 설치해줍니다. 윈도우에서는 설치가 매우 간단하죠!

리눅스 사용자라면 아래 두 개의 명령어를 입력하면 설치할 수 있습니다.

sudo apt-get install git
sudo apt install git

깃 홈페이지

설치하면서 크게 설정을 건드릴 필요는 없지만 제가 사용하면서 편리했던 것 몇 가지만 살펴볼게요😀

첫 번째는 editor 설정입니다. next 하다 보면 아래 사진과 같은 페이지를 볼 수 있는데, 기본적으로 vim으로 editor가 설정되어 있습니다. 저는 vim에 익숙하지 않기 때문에 vscode로 설정을 바꿔주었어요. vscode 외에도 다른 ide가 많으니 취향껏 설정하시면 될 것 같아요! 이 외에는 그냥 next해도 충분합니다.

editor 설정

 

설치가 완료되었다면 바탕화면에서 마우스 우클릭을 해보세요! 아래 사진처럼 Git Bash HERE이라는 라인이 추가된 걸 알 수 있고 이걸 클릭하면 해당 위치에서 git bash를 열 수 있습니다.

 

Repository 만들기

깃을 설치했으니 이제는 자신만의 레파지토리를 만들어봅시다! 깃허브도 좋고 깃 랩도 좋고 자신이 아이디를 가지고 있는 곳에 접속해봅시다. 저는 저희 학교 깃 랩에 로그인하고 project -> your project로 들어왔습니다.

오른쪽 위에 New project 버튼을 클릭해 새로운 레파지토리를 만들어줍시다!

프로젝트 이름을 마음대로 설정하고 Create project를 하면 자신만의 repository를 만들 수 있습니다.

 

Clone, 클론 하기

프로젝트를 만들고 나면 다음과 같은 화면이 뜰 텐데, 이제 이것을 자신의 바탕화면으로 가져올 겁니다. Clone 버튼을 눌러서 Clone with HTTPS의 주소를 복사합시다. 오른쪽 버튼을 누르면 자동으로 복사돼요👍

이제 바탕화면으로 다시 가서 git bash를 열고 아래와 같이 입력해보세요! 그럼 바탕화면에 자신이 만든 레파지토리가 생긴 것을 확인할 수 있어요.

git clone 복사한주소

 

status, add, commit, push

새롭게 생긴 레파지토리를 들어가면 아직 아무 파일도 없는데 우리는 파일을 하나 만들어 볼 거예요! 새로운 텍스트 파일을 하나 만들어보세요. 그리고 저장한 다음 다시 git bash를 열어주세요. 폴더 내부에서 오른쪽 버튼을 클릭하면 그 지점에서 bash가 열립니다!

bash를 열고 git status 라고 한번 입력해보세요. 빨간색 글씨로 새로 만든 파일이 보이는 것을 알 수 있죠. git status는 변경된 파일의 상태를 보여주는 명령어입니다. 아직 unstage 상태라 빨간색으로 보여요.

이제 add 커멘드를 이용해서 새로운 파일을 stage 상태로 바꿔봅시다! git add new_text.txt 라고 입력하면 new_text.txt파일을 stage 상태로 바꿔줍니다. 이렇게 git add는 파일의 상태를 unstage에서 stage로 바꿔주는 명령어입니다. 다시 git status를 입력하면 파란색으로 바뀐 모습을 볼 수 있어요!

그다음 순서는 commit과 push입니다. commit으로 해당 파일에 대한 설명을 간략하게 작성해 줍니다. 그다음 push를 하면 깃허브 페이지 혹은 깃 랩 페이지에 등록이 되는 것이죠! 그럼 commit을 해봅시다. git commit -m "커밋 메시지"라고 입력해보세요. 깃을 처음 사용하는 사람이라면 아래와 같은 오류가 발생할 겁니다. bash 창에서 말하는 대로 자신의 email 주소와 name을 등록해주면 됩니다.

  git config --global user.email "메일주소@메일도메인"
  git config --global user.name "이름"

등록을 다 했다면 다시 commit 메시지를 등록해봅시다. 메시지를 등록하고 git push를 입력하면 로컬에 있는 파일이 서버로 올라가는 것이죠.

여기까지 하면 깃 랩 혹은 깃허브 페이지에 파일이 올라간 것을 확인할 수 있습니다🎉🎉

 

뭐 따라 하라는 대로 따라 했으니 되긴 했는데 stage, add, commit, push 너무 어렵죠?? 그래서 간단하게 예시를 하나 들어볼게요. 택배 예시입니다.

우리가 보낼 물건을 새롭게 만든 new_text.txt 파일이라고 생각해봅시다. 이걸 택배로 부치려면 먼저 종이 상자에 포장을 해야 하죠. 그래서 우리는 포장을 합니다. 이게 파일의 상태를 unstage에서 stage로 바꾸는 거예요. 즉 물건을 종이 상자에 넣고 포장하는 것을 git add 명령어를 통해 할 수 있는 거죠. git status는 이게 포장된 물건인지 아닌지 볼 수 있는 명령어이고요. 그리고 포장한 상자에 메시지를 남깁니다. 쉽게 깨질 수 있는 물건일 수도 있으니 취급주의라는 메시지를 상자에 남기는 것처럼요. 택배에는 이게 의무가 아니지만 깃은 의무입니다. 그래서 git commit -m "메시지" 명령어를 통해서 파일에 대한 메시지를 남깁니다. 그런 다음 물건을 보내야겠죠? 우리는 포장된 물건, 즉 stage 된 파일을 git push 명령어를 통해 로컬에서 서버로 보낼 수 있습니다.

 

조금은 이해가 되시나요?? status로 상태를 보고 서버에 올릴 파일을 add 한 다음에 그 파일에 대한 설명을 commit -m으로 해줍니다. 그리고 push로 서버에 올리면 끝!!

 

다른 사람의 repository를 내 repository로 클론 하기

다른 사람의 레파지토리를 로컬로 받아오는 것은 쉽습니다. 받고 싶은 레파지토리에 들어가서 HTTPS 주소를 복사하고 bash에 git clone 주소 라고 입력해주면 clone 해서 가져올 수 있죠. 하지만 이것을 내 레파지토리로 옮기는 것은 어떻게 할까요? 단순하게 파일을 복사, 붙여 넣기 하면 commit 메시지의 로그가 남지 않고 모두 새로운 파일이 되어버립니다. 이러면 안 된다고 저희 교수님께서 항상 그러셨죠. 그래서 내 레파지토리에 커밋 로그까지 남기면서 모두 가져오는 방법을 알기 위해서는 먼저 remote라는 것에 대해 알아야 합니다. 리모트는 택배를 예로 들었을 때 수신인의 주소를 입력하는 것이라고 생각하면 됩니다. 기본적으로 clone을 하면 원래 레파지토리의 소유자가 origin remote로 등록되어 있습니다. git remote -v 라고 입력하면 origin이라는 이름의 리모트가 있고 이 리모트의 주소는 https:~~다 라고 알려주는 겁니다. 

 

remote가 뭔지 알았으니 이제 가져와봅시다. 저는 교수님의 레파지토리 하나를 가져와볼게요! 교수님 레파지토리는 pa2라는 이름이고 클론 한 뒤 log를 보니 몇 개의 commit 메시지가 있는 것을 볼 수 있습니다.

커밋 로그는 q를 누르면 빠져나올 수 있습니다. 그리고 git remote -v로 현재 origin 리모트가 누구로 되어있는지 확인해봅시다.

보이시나요? origin이라는 이름의 리모트가 https~로 해서 제가 클론 해온 주소로 되어 있네요. 이 remote를 이제 제가 처음에 만들었던 firstProject로 바꿔볼 겁니다. 일단 기존에 있던 리모트를 삭제해주세요. git remote remove origin 이라고 입력하면 origin이라는 remote를 삭제해줍니다.

그리고 이제 우리 remote를 등록해봅시다! git remote add origin 레파지토리주소 라고 입력하면 origin이라는 이름의 remote가 자신이 입력한 주소로 등록될 거예요! 😢이때 레파지토리는 아무것도 푸시하지 않은 빈 레파지토리를 이용해주세요! (위에서 만들어서 실습해본 레파지토리는 안돼요! 새롭게 아무것도 없는 레파지토리를 만들어주세요) 저는 asefsef라고 대충 새로운 레파지토리를 만들어서 remote로 등록해줬습니다.

그리고 다시 remote를 확인해보면 origin이라는 이름으로 우리가 만든 주소가 들어간 것을 볼 수 있습니다. remote를 새롭게 만들었지만 아직 로컬에만 적용되었고 서버에는 적용되지 않았죠? 그래서 서버에 새롭게 만든 리모트를 등록해줍니다. git push --set-upstream origin master 명령어를 통해 origin이라는 리모트를 서버에도 등록해줘!라고 말해줍니다.

여기까지 모두 따라오시면 commit log와 함께 다른 사람의 레파지토리를 나의 레파지토리로 옮길 수 있습니다!!

제 asefsef 레파지토리에 7개나 되는 commit 로그가 있는 걸 보면 제대로 가져온 것 같습니다.

 

단축키 등록

저는 명령어를 모두 쓰는 것을 정말 싫어하고 단축키를 정말 좋아합니다. git status, git commit -m 등등 명령어를 모두 쓰는 건 너무 비효율적이라고 생각하는 사람이죠. 그래서 단축키를 등록할 수 있습니다. git commit -m을 git cm으로 단축키를 등록하는 법은 아래와 같습니다.

git config --global alias.cm 'commit -m'

이런 식으로 자신이 원하는 단축키를 저장해놓으면 정말 편리합니다!!

 

여기까지 깃 사용법에 대해 알아봤습니다✨

'Coding' 카테고리의 다른 글

Commit Rules, 깃 커밋 규칙  (0) 2021.01.13

댓글