개발

Git과 Github을 파헤쳐보자.

jiwoosmile 2022. 8. 8. 10:05

아직도 git과 github이 헷갈리시는 분들이 계시다면 이 글을 주목해주세요!

 

개발자로 일을 하게 되면 '버전관리'의 필요성을 일을 하면 할 수록 느끼게 됩니다.

버전관리를 할 수 있는 툴에는 svn, git등이 있는데요,

입사한 첫 회사에서는 svn을 썼었고, 두 번째 회사에서는 git을 사용했습니다.

svn은 git보다 처음에는 훨씬 간단하고 쓰기 쉽지만, git을 쓸 줄 아는 게 뭔가 더 간지도 나고, 익숙해지면 더 많은 일들을 할 수 있기 때문에 git을 꼭 배우는 것을 추천드립니다.

그리고 많은 좋은 개발 회사들은 git과 github을 사용하니, 이 둘을 같이 사용할 줄 아는 게 좋은 개발자가 되기 위한 첫 걸음이라고 볼 수 있습니다.

 

여기서 첫번째 질문 git과 github은 같은 게 아니었나요?

 

git과 github을 같이 쓰는 경우가 많아서 둘을 헷갈리는 경우가 많지만, github은 git을 조금 더 잘 쓰기 위한 서비스입니다.

대표적인 예시로, 개발자로 일을 하거나 오픈소스에 기여할 때 PR(pull request)을 하게 되는 경우가 있는데, PR은 git의 기능이 아닌 github의 기능입니다.

 

두번째 질문! git을 왜 쓸까요?

 

git은 내가 작업한 작업들 간에 undo와 redo를 편하게 할 수 있게 해주고, 다른 사람과 협업을 편하게 도와주기 때문에 씁니다.

git이 버전관리를 위한 것이라고 했기 때문에 undo, redo를 편하게 해준다는 것은 이해가 쉽게 되실 것 같습니다.

협업에 도움이 되는 것은 git이 버전관리 외에 동기화에도 사용되기 때문입니다.

여러명이 협업을 할 때는 공동으로 작업하는 저장소도 있을 것이고, 개인적으로 작업하는 저장소가 있을텐데, 공동 저장소와 개인적인 작업의 동기화를 할 때 git을 사용할 수 있습니다.

그렇기 때문에 git 은 기본적으로 내 컴퓨터의 저장소와 다른 곳의 저장소를 동기화해주는 프로그램이라고 생각해주시면 됩니다.

 

Git의 대표적인 명령어에 대해 알아봅시다.

git init

초기화를 하고, git을 사용할 수 있게 해줍니다.

이 명령어를 입력하면 .git 폴더가 만들어집니다.

 

git status

유용한 명령어들과 함께 현재 상태를 확인할 수 있습니다.

이 명령어를 자주 사용하는 것이 좋습니다.

 

git remote add <저장소명> <링크>

이 명령어를 통해 동기화를 하기 원하는 github의 레포지토리에 내가 원하는 저장소명으로 (upstream과 origin을 주로 사용하게 됩니다.) 연결할 수 있게 됩니다.

이 때 링크는 동기화를 원하는 깃헙의 레포지토리에서 초록색 Code를 클릭하고, SSH를 클릭했을 때 나오는 링크를 사용하면 됩니다.

git remote

등록한 원격 저장소들의 목록을 확인할 수 있습니다.

 

git fetch <저장소명>

이 명령어로 원격 저장소들의 파일들을 가져올 수 있습니다.

 

git switch -c <브랜치명> <참고할 브랜치>

참고할 브랜치를 참고해서 원하는 브랜치명으로 브랜치를 생성할 수 있습니다.

 

git diff

바뀐 내용을 확인할 수 있습니다.

 

git add .

변경 사항을 staging할 수 있습니다.

 

git commit

커밋을 할 수 있습니다.

커밋 제목을 쓰고 한 줄을 띄고 본문을 작성합니다.

이 때 커밋 메세지는 왜 이런 변화가 있었는 지에 대한 내용을 추가해두면 좋습니다.

 

git push <저장소명> <브랜치명>

원격 저장소에 커밋한 내용을 반영할 수 있습니다.

 

git restore <file>

파일을 복구할 수 있습니다.

 

git restore --staged <file>

스테이징하기 전의 상태로 되돌릴 수 있습니다. (git add <file>을 하기 전의 상태로 돌아갑니다.)

 

git log

작업 내역을 확인할 수 있습니다.

 

git log --graph

작업 내역을 시각적인 정보와 함께 확인할 수 있습니다.

 

추가적으로 github에서 명령어 없이 레포지토리를 만들기, 커밋 등등을 할 수 있는데요, 깃헙에서 레포지토리를 만들게 된다면 README파일과 .gitignore 파일을 생성해주시는 것이 좋습니다.

 

git을 잘 사용하려면 터미널과도 친해져야 하는데요,

터미널에서 자주 쓰이는 명령어와 vim 사용법에 대해서도 간략히 알아봅시다.

 

code . 

현재 위치에서 VScode를 오픈합니다.

 

open .

현재 위치에서 finder를 오픈합니다.

 

mkdir <directory>

디렉토리를 만들 수 있습니다.

 

ls

디렉토리 내부에 있는 디렉토리나 파일들의 목록을 확인합니다.

 

ls -al

디렉토리 내부의 디렉토리나 파일들의 정보까지 조금 더 자세히 확인합니다.

 

pwd

작업 위치를 알려줍니다.

 

cd <directory>

원하는 디렉토리로 이동합니다.

 

cd ..

상위의 디렉토리로 이동합니다.

 

rm <file>

파일을 삭제합니다.

 

rm -rf <directory>

디렉토리의 모든 내용을 삭제합니다.

 

exit

터미널을 닫을 때는 x를 클릭해서 닫기보다 exit을 이용해서 나가는 것이 좋습니다.

 

vim 사용법

git commit 명령어를 치면 vim 에디터가 열리게 됩니다. 이 때 아무리 입력을 하려고 해도 입력이 안되는데요, i를 눌러 입력모드로 전환을 해주시면 됩니다.

 

i

입력모드로 전환합니다.

 

esc

입력모드에서 벗어납니다.

 

:q

에디터를 닫습니다.

 

:q!

에디터를 강제 종료합니다.

 

:wq

변경된 내용을 저장하고 에디터를 닫습니다.

 

x

입력모드가 아닐 때 delete키처럼 작용하여 커서 뒤의 내용을 지웁니다.

 

u

입력모드가 아닐 때 undo합니다.

 

자주 사용하게 되는 git flow

아래와 같은 명령어들을 반복 사용하게 되므로 익숙해지시면 좋습니다.

 

디렉토리 생성

디렉토리로 이동

git init

git remote add <저장소명> <링크>

 

git fetch <저장소명>

git switch -c <브랜치명> <참고할 브랜치>

개발하기

git add .

git commit

git push <저장소명> <브랜치명>

 

git fetch <저장소명>

git switch -c <브랜치명> <참고할 브랜치>

개발하기

git add .

git commit

git push <저장소명> <브랜치명>

 

...반복