지금까지 Git에 관한 커맨드, 원리, 활용 방법까지 다양한 내용들에 대해 배웠습니다. 이번 시간에는 Git에 대한 마무리로 이때까지 배운 내용들을 총 정리하는 시간을 가져보겠습니다.

🧙‍♂️ Git 기본 커맨드

git init은 현재 디렉토리를 Git이 관리하는 프로젝트 디렉토리(=working directory)로 설정하고 그 안에 레포지토리(.git 디렉토리)를 생성하는 커맨드입니다.

git config user.name '아이디'현재 사용자 아이디를 '아이디'로 설정하는 커맨드이고 git config user.email '이메일 주소'는 현재 사용자의 이메일 주소를 '이메일 주소'로 설정하는 커맨드입니다. 아이디와 이메일 주소 모두 커밋할 때 필요한 정보입니다.

git add [파일 이름]수정 사항이 있는 특정 파일을 staging area에 올리는 커맨드입니다. add 뒤에 v파일 이름 대신 디렉토리명이 들어가면 해당 디렉토리 내에서 수정 사항이 있는 모든 파일들을 staging area에 올립니다. 만약, working directory 내의 수정 사항이 있는 모든 파일들을 staging area에 올리고 싶다면 add 뒤에 .을 적으면 됩니다.

git reset [파일 이름]staging area에 올렸던 파일을 다시 내리는 커맨드입니다. 옵션에 관한 내용은 아래에서 더 자세히 다루겠습니다.

git status는 Git이 현재 인식하고 있는 프로젝트 관련 내용들을 출력하는 커맨드입니다. 문제 상황이 발생했을 때, 현재 상태를 파악하기 위해 활용하면 좋습니다. 예를 들어, 수정이 되었으나 staging area에 반영되지 않으면 이 커맨드를 통해 문제를 확인할 수 있습니다.

git commit -m "커밋 메시지"는 현재 staging area에 올라와 있는 것들을 커밋으로 남기는 커맨드입니다.

git help [커맨드 이름]사용법이 궁금한 Git 커맨드의 공식 매뉴얼 내용을 출력하는 커맨드입니다.

🧙‍♂️ GitHub 관련 커맨드

git push -u(or --set-upstream) origin master는 로컬 레포지토리의 내용을 처음으로 리모트 레포지토리에 올릴 때 사용하는 커맨드입니다. 이 커맨드를 한번 실행하고 난 후에는 git push라고만 입력해도 로컬 레포지토리의 내용을 리모트 레포지토리에 올릴 수 있고 git pull이라고만 입력해도 리모트 레포지토리의 내용을 로컬 레포지토리로 가져올 수 있습니다.

git clone [프로젝트 GitHub 상 주소]GitHub에 있는 프로젝트를 내 컴퓨터로 가져오는 커맨드입니다.

🧙‍♂️ 커밋 관련 커맨드

git log커밋 히스토리를 출력하는 커맨드입니다. 이 커맨드에 --pretty 옵션을 사용하면 커밋 히스토리를 다양한 방식으로 출력할 수 있습니다. 예를 들어, 이 옵션에 oneline이라는 값을 주면 커밋 하나당 한 줄씩 출력해줍니다.

git show [커밋 아이디]특정 커밋에서 어떤 변경 사항이 있었는지 확인하는 커맨드입니다.

git commit --amend최신 커밋을 다시 수정해서 새로운 커밋으로 만드는 커맨드입니다.

길이가 긴 커맨드에는 별명을 붙여 사용이 가능한데요. git config alias.[별명] [커맨드] 이런 식으로 나타내면 됩니다. 설정 이후로는 별명만으로도 해당 커맨드를 실행할 수 있습니다.

git diff [커밋 A의 아이디] [커밋 B의 아이디]는 두 커맨드 간의 차이를 비교하는 커맨드입니다. 혹은 두 브랜치 간의 차이도 나타내줍니다.

앞서 본 git reset [옵션] [커밋 아이디] 커맨드는 옵션에 따라 하는 작업이 달라집니다. --soft 옵션은 HEAD가 특정 커밋을 가리키도록 이동시키고 --mixed 옵션은 staging area도 특정 커밋처럼 리셋합니다. 마지막으로 --hard 옵션은 working directory도 특정 커밋처럼 리셋합니다. 옵션을 생략하면 --mixed 옵션이 적용됩니다. 이때, 커밋 아이디 대신 HEAD의 위치를 기준으로 한 표기법(HEAD^, HEAD~3)을 사용해도 됩니다.

git tag [태그 이름] [커밋 아이디]특정 커밋에 태그를 붙이는 커맨드입니다.

🧙‍♂️ 브랜치 관련 커맨드

git branch [새 브랜치 이름]새로운 브랜치를 생성하는 커맨드입니다. 삭제하려면, git branch -d [기존 브랜치 이름]커맨드를 입력하면 됩니다.

git checkout -b [새 브랜치 이름]은 새로운 브랜치를 생성하고 그 브랜치로 바로 이동하는 커맨드입니다. 새 브랜치 이름 대신 기존 브랜치 이름이 들어가면 해당 브랜치로 이동합니다.

git merge [기존 브랜치 이름]는 현재 브랜치에 다른 브랜치를 merge(병합)하는 커맨드입니다. --abort 옵션을 붙이면 merge를 하다가 CONFLICT가 발생했을 때, 일단 merge 작업을 취소하고 이전 상태로 돌아갑니다.

🧙‍♂️ Git 실전 커맨드

git fetch는 로컬 레포지토리에서 현재 HEAD가 가리키는 브랜치의 upstream 브랜치로부터 최신 커밋을 가져오는 커맨드입니다. 가져오기만 한다는 점에서, 가져오고 merge까지 하는 git pull과는 차이가 있습니다.

git blame은 특정 파일의 내용 한줄한줄이 어떤 커밋에 의해 생긴 것인지를 출력하는 커맨드입니다. 이 커맨드를 사용하면 커밋의 작성자를 알 수 있습니다.

git revert특정 커밋에서 이루어진 작업을 되돌리는(취소하는) 커밋을 새로 생성합니다.

git reflogHEAD가 그동안 가리켜왔던 커밋들의 기록을 출력합니다.

git log --all --graph모든 브랜치의 커밋 히스토리를 커밋 간의 관계가 잘 드러나도록 그래프 형식으로 출력하는 커맨드입니다.

git rebase [브랜치 이름]git merge와 같은 효과를 가지지만 커밋 히스토리가 한 줄로 깔끔하게 된다는 차이점이 있습니다. A, B 브랜치가 있는 상태에서 현재 HEAD가 A 브랜치를 가리킬 때, git rebase B를 실행하면 A, B 브랜치가 분기하는 시작점이 된 공통 커밋 이후로부터 존재하는 A 브랜치 상의 커밋들이 그대로 B 브랜치의 최신 커밋 이후로 이어 붙여집니다.

git stash는 현재 작업 내용을 stack 영역에 저장하는 커맨드입니다. 이 커맨드 뒤에 apply [커밋 아이디]를 붙이면 stack 영역에 저장된 가장 최근의(혹은 특정) 작업 내용을 working directory에 적용합니다. 또한, 이 커맨드 뒤에 drop [커밋 아이디]을 붙이면 stack 영역에 저장된 가장 최근의(혹은 특정) 작업 내용을 stack에서 삭제합니다. 위 두 동작을 동시에 하려면 이 커맨드 뒤에 pop [커밋 아이디]을 붙이면 됩니다.

git cherry-pick [커밋 아이디]특정 커밋의 내용을 현재 커밋에 반영하는 커맨드입니다.

🧙‍♂️ 그 밖에 알아야 할 것

git commit만 적고 실행하면 커밋 메시지를 직접 입력할 수 있는 텍스트 에디터 창이 뜹니다. 메시지를 적고 :wq를 누르면 커밋이 완료됩니다.

git push와 git pull은 그 작업 단위브랜치입니다. 예를 들어, master 브랜치에서 git push를 하면 master 브랜치의 내용만 리모트 레포지토리의 master 브랜치로 전송되고 premium 브랜치의 내용은 전송되지 않습니다. git push에 --all이라는 옵션을 주면 모든 브랜치의 내용을 전송할 수 있기는 합니다.


이것으로 Git 토픽이 마무리되었습니다! 어떠셨나요? 처음 Git을 봤을 때, 뭔말인지도 모르겠고 막연히 어렵게만 느껴졌었죠? 그런데 막상 배우고 나니 이제는 가벼운 요청 사항 정도는 잘 처리할 것 같은 자신감이 들지 않으신가요?

사실 아직 배우지 못한 커맨드들이 많습니다. 그렇지만 걱정하실 필요가 전혀 없습니다! 우리는 커맨드 뿐만 아니라 Git의 동작 원리도 함께 배웠기 때문이죠. 새로운 커맨드를 만나게 되더라도 절대 당황하지 말고 Git의 동작 원리부터 떠올려 보시면 됩니다. 그리고 나서 원하는 작업을 생각해보고 그 작업에 맞는 커맨드를 찾아 나가는 거죠.

Git은 개발자들의 필수 소양으로 여겨질만큼 개발에 있어 아주 강력한 도구입니다. 아직도 낯설고 어렵게 느껴지신다면 복습을 통해 꼭 익히시길 바랍니다.

이제 여러분만의 작업 내용을 직접 GitHub에 기록해보세요! 그럼 앞으로의 개발 여정이 한층 수월해질 것이라 장담합니다. 이력서에 남기기도 좋구요.

지금까지 수고 많으셨습니다! 🥳🥳🥳

* 이 자료는 CODEIT의 'Git으로 배우는 버전 관리' 강의를 기반으로 작성되었습니다.
profile
There's Only One Thing To Do: Learn All We Can

0개의 댓글