HyeGyeong
HyeGyeong 프로그래머를 꿈꾸며 JavaScript 공부 중

GitHub 쉽게 사용하자 [많이 쓰는 명령어 정리]

GitHub 쉽게 사용하자 [많이 쓰는 명령어 정리]

GitHub을 처음 접하면 정말 이게 뭔가 싶고 마냥 어렵다.
컴퓨터의 UI처럼 눈에 보이는 것도 아니고 글만 보고 ‘음…지금 파일이 이래저래 됐겠구나’라고 예측해야 한다.
add, commit, push 등 많이 쓰는 명령어는 그런 생각도 안 하고 이젠 편하게 쓸 수 있는 줄 알았는데 한 번씩 에러가 뜨는 경우가 있다.
이런 일을 겪고 나면 어렵게 작성해 둔 파일들이 잘못될까봐 커멘드 라인에 한 줄 한 줄 적는 게 조심스럽다.
그리고 add, commit, push 등 자주 쓰는 명령어 외에는 자꾸 까먹는다ㅜㅜ 또 써야되는데…
그래서 Code States의 자료들로 git 명령어를 정리 하기로 했다.

“Command Line이 뭐야?”

walking

명령 줄 인터페이스(CLI, Command line interface) 또는 명령어 인터페이스는 가상 터미널또는 터미널을 통해 사용자와 컴퓨터가 상호 작용하는 방식을 뜻한다. 즉, 작업 명령은 사용자가 컴퓨터 키보드 등을 통해 문자열의 형태로 입력하며, 컴퓨터로부터의 출력 역시 문자열의 형태로 주어진다. 출처: 위키백과

Mac에서는 ‘Terminal’, Window에서는 ‘명령 프롬프트’이라고 하면 친숙하다. 우리가 git을 이용하기 위해서는 Command Line 사용법을 알아야 한다.
sourcetree처럼 git을 시각적으로 보여줘서 쉽게 사용할 수 있게 도와주는 도구도 있지만 CLI(Command Line Interface)로 계속 연습해야 더 빠르고 익숙하게 다룰 수 있다.

“Git은 뭐고 Github은 뭐야?”

git 컴퓨터 파일의 변경사항을 추적하고 여러 명의 사용자들 간에 해당 파일들의 작업을 조율하기 위한 분산 버전 관리 시스템이다. 출처: 위키백과

github 분산 버전 관리 툴인 깃(Git)을 사용하는 프로젝트를 지원하는 웹호스팅 서비스이다. 출처: 위키백과

git은 프로젝트의 어떤 부분도 겹쳐쓰지 않게 프로젝트의 변경을 관리하는 버전관리 소프트웨어이고 github은 git 유저들의 커뮤니티라고 생각하면 된다.

“기본 용어들”

Repository

뜻 그대로 저장소를 뜻한다. 버전을 관리할 때 일종의 ‘스냅샷’을 찍는데 그 스냅샷들을 시간의 흐름에 따라 저장해주는 곳이다.

staging area

walking
어떤 변경사항이 저장소에 커밋되기 전에, 반드시 거쳐야만 하는 중간단계이다. 여러 파일들이 변경된 경우, 일부만 선택하여 올릴 수 있어서 좋다.

“Git 명령어를 알아보자”

git 명령어는 아주 많지만 그 중에서 기본적으로 사용하는 것은 몇 가지 안 된다. 외워서 사용하면 편하다.

git init

git 저장소를 초기화한다. 저장소 또는 디렉토리에서 이 명령어를 사용해야 git의 관리를 받을 수 있다.
git init

git remote

기존에 있던 원격 저장소를 clone해서 가져온 게 아니라면 git init, [같은 이름의 디렉토리] 등으로 github의 저장소와 연결된 것이 아니다. 이 부분에서 많이 헷갈릴 수 있다. remote는 저장소와 연결해준다 또는 git에게 알려준다고 생각하고 쓰시길.
git remote add origin [repository 주소]

git init 취소

git 사용법이 익숙하지 않아서 엉뚱한 디렉토리를 git init 했을 때 필요한 명령어다.
rm -r .git
git init을 생성하면 ‘.git’ 디렉토리가 생기는데 이 명령어를 쓰면 ‘.git’ 디렉토리를 삭제하여 초기화를 취소해준다. 위의 명령어가 안 되면
sudo rm -r .git 해보시길.

branch

하나의 저장소를 가지처럼 나눠서 관리할 수 있다. branch 기능 덕분에 협업을 편하게 할 수 있다.
git branch // 현재 저장소의 branch를 모두 볼 수 있다.
git branch [name] // [name] branch를 생성해준다.

git add

staging area에 올려두는 명령어다. 그냥 올려두기만 한 것 뿐이지 저장소에 닿지도 않았다. git add -> commit -> push를 해야 내 계정의 github에서 볼 수 있다는 것을 꼭 기억하라.
git add . // 변경사항 모두
git add [file or directory] // 선택한 file, directory만

git commit

커밋을 하는 그 시점의 저장소의 ‘스냅샷’을 찍어, 프로젝트의 이전부터 현재까지 사이에서 복원, 재평가 등을 할 수 있는 체크포인트(ID)를 생성한다.

간단한 commit message

git commit -m "message"
“메세지”에는 commit할 때의 상태, 수정사항 등을 기입한다.

vim을 이용한 commit 방법

1. git commit
2. i(insert 모드) -> message 입력 -> esc -> :wq(저장 후 닫기)

git push

github 저장소에 올려주는 명령어. push까지 하면 github에서 볼 수 있다.
git push origin [branch name] // 보통은 master

git push 강제로 하기

github 블로그를 만들면서 자꾸 push가 안 먹어서 강제로 올렸더니 잘 돌아간다.
문제 될 게 안 보이는데 push를 해도 error, hint~ 이런 게 뜨면 아래의 명령어로 시도해보시길.
git push origin +[branch name]
git push origin [branch name] -f

git checkout

checkout 뒤에 오는 브랜치로 head를 옮기는 명령어이다.
git checkout [branch name]
ex) git checkout betty
// 원래의 branch가 master였다면 betty라는 branch로 옮긴 것이다.

fork, git clone

원격 저장소에서 원격 저장소로 복사해올 때 fork,
원격 저장소에서 로컬 저장소로 복사해올 때 clone이라 한다.
fork는 github 우측 상단에 ‘fork’ 버튼이 있다. 누르고 복사한 저장소를 보관할 계정 선택하면 끝.
clone해오면 그 저장소의 이름을 가진 디렉토리가 생성된다. 초반에 잘 몰라서 디렉토리를 만들어놓고 clone을 하곤
했는데 [betty directory] > [betty directory]가 되서 한 번에 끝날 일을 번거롭게 만들곤 했다. 그래서 더 기억에 남음.
git clone [repository 주소]

git status

현재 git 저장소의 상태를 체크한다. 변경사항이 있는지, staging area에 어떤 파일, 디렉토리가 올라갔는지, 어떤 브랜치에서 작업하고 있는지 확인할 수 있다.
git status

git log

commit 내역을 확인 할 수 있다. 그리고 commit id(체크 포인트)가 나와서 특정 위치의 커밋으로 되돌아 가야할 때 유용하다. commit message를 보고 확인할 수 있기 때문에 commit 대충 써서 올린 사람은 피 본다. 왠만하면 시간이 흐른 뒤에 봐도 기억할 수 있게 적어라.
git log
git log를 종료할 땐 ‘q’ press.

git diff

현재 unstaged 된 수정사항을 확인할 수 있다.
이것저것 옵션들이 있던데 아직 쓴 적도 없고 필요성을 못 느껴서 패스.
git diff

git merge

branch들을 합칠 때 사용한다. 보통 master branch에 합치기 때문에

  1. git checkout master
  2. git merge [merge할 branch name] 이 순서로 사용한다.

git workflow

git workflow를 쉽게 이해할 수 있는 좋은 이미지를 얻었다!

walking

git 단축 alias

window git bash에서는 안 되는데 zsh 터미널에선 가능하다.
alias를 설정할 수 있는 것 같은데 방법을 아직 잘 모르겠음…
그냥 밑에 많이 쓰는 git 명령어들만 잘 써봐야징~!

1
2
3
4
5
6
7
8
9
10
 gco = git checkout
 grb = git rebase -i
 gst = git status
 gcm = git commit
 gpl = git pull
 gps = git push
 glg = git log
 gaa = git add . || git add --all
 gdf = git diff
 gbr = git branch