Programming/ETC

[SSAFYcial] 싸피에서도, 현업에서도 자주 쓰는 Git 명령어 알아보기

리버김 2025. 1. 16.

개발에 입문하고 가장 먼저 배우는 것들 중 하나가 바로 Git일 텐데요. 오늘은 제가 개발을 거의 알지 못하던 SSAFY에서 처음 배웠지만, 개발자로 일하고 있는 지금도 자주, 또는 유용하게 쓰고 있는 Git 명령어들을 소개해보려고 합니다!

 

출처: DALLE

Git이란

많은 분들이 알고 계시겠지만 Git은 '버전 관리 시스템' 입니다. 개발을 하면서 여러 명이 하나의 코드 베이스에 수많은 변경 사항을 만들어야 하기 때문에, 이 과정에서 코드의 버전을 잘 기록하고 활용하기 위해 만들어진 도구인데요. 2005년, 리눅스 커널을 개발하던 개발자들이 만들었습니다. 이 Git을 사용하기 위한 명령어들을 터미널에 입력하면 내 코드의 상태를 자유자재로 저장하거나 되돌릴 수 있습니다.

 

git add, git commit -m, git push origin 'git branch 이름': 변경 사항을 원격 저장소에 업로드 할 때

# 현재 변경된 모든 파일들을 commit하기 위해 등록하는 과정입니다.
# 만약 특정 파일만 commit하고 싶다면 파일 이름을 '.' 자리에 적으면 됩니다.
git add .

# commit은 변경 사항을 기록하는 과정입니다. 이 때 변경 사항을 설명하는 메시지를 '-m' 이후에 적을 수 있습니다.
git commit -m "commit 메시지"

# push를 하면 원격 저장소(GitHub, GitLab 등)에 commit(들)을 업로드하는 것입니다.
git push

 

이 세 단계는 내 컴퓨터에서 만든 변경 사항들을 내 코드가 저장되어 있는 원격 저장소에 업로드 하는 과정입니다. 'git push'까지 마쳤을 때 비로소 코드가 GitHub이나 GitLab과 같은 원격 저장소에 업로드되게 됩니다. 그렇게 함께 일하는 팀원들이나, 나중의 내가 그 코드를 참고하거나 내려받을 수 있게 됩니다.

 

git switch -c '새 branch 이름': 특정 branch를 기준으로 새 branch를 만들 때

git switch -c "새 branch 이름"

 

Git을 사용하면서 가장 먼저 해야 할 일 중 하나죠? 바로 타겟 브랜치에서 뻗어 나올 내 브랜치를 만드는 건데요, 이 때 'create'을 뜻하는 '-c' 옵션을 사용해 브랜치를 간편하게 만들 수 있습니다. 만드는 순간 새 브랜치로 공간이 이동됩니다.

 

git rebase 'branch 이름': 내 branch의 시작을 타겟 branch의 최신 버전으로 바꾸고 싶을 때

Git rebase "branch 이름"

 

git merge는 자주 써도, git rebase는 처음 들어보시는 분들도 계실 텐데요. git rebase는 베이스가 되는 브랜치(대부분 main 브랜치일 것입니다.)를 내 브랜치에 합치는 명령어인데요. 자매품 'git merge'와 다른 점은 내 브랜치가 시작됐을 때보다 추가적인 업데이트가 있는 베이스 브랜치의 내용을 맨 마지막에 한 번에 덮어 쓰는 것이 아니라, 내 브랜치가 마치 최신의 베이스 브랜치에서 시작된 것처럼 내 브랜치의 시작점을 최신 베이스 브랜치로 만드는 작업을 말합니다. 어떻게 보면 히스토리를 조작하는 것이라고 볼 수도 있습니다.

 

이런 Git rebase의 장점은 타겟 브랜치의 최신 버전을 항상 내 브랜치 앞쪽에 배치해 가독성을 높이고 코드 리뷰를 편리하게 만든다는 것입니다. 다만 rebase를 할 때 force push 등 다소 까다로운 부분들이 있으니, 내 팀의 사정에 맞게 잘 고려하고 사용하는 것이 중요하다고 합니다.

 

git rebase --abort: rebase 취소하고 나가기

git rebase --abort

 

 

git rebase 역시 merge처럼 두 브랜치를 합치는 일이기 때문에 코드 간 충돌이 발생할 때도 있는데요, 충돌이 너무 많다 보면 rebase 과정에서 잘못된 코드를 선택하는 경우도 종종 있습니다. 이때 그 과정을 하나씩 거슬러 올라가서 수정할 수 있다면 좋겠지만, 때로는 rebase를 아예 취소하고 처음부터 다시 하고 싶을 때도 있는데요.

 

이 때 아주 가끔이지만 유용하게 사용하는 명령어가 --abort입니다. abort는 영어로 '중단하다'라는 뜻으로 이 명령어를 사용하면 아예 rebase를 하지 않았던 것처럼 모든 과정이 취소되고 git rebase 명령어를 치기 전처럼 내 코드가 돌아가게 됩니다. 물론 git rebase 후 최종 push를 하기 전에만 사용할 수 있어요. 모둔 rebase 과정이 취소되기 때문에 주의하세요!

 

git cherry-pick 'commit 번호': 다른 branch에서 특정 commit만 내 branch로 가져오고 싶을 때

git cherry-pick 'commit 번호'

 

 

git cherry-pick은 동료의 커밋, 혹은 나의 지난 커밋에서 한 커밋만 쏙 빼오고 싶을 때 사용하는 명령어입니다. 사용법도 너무 간단한데요. 명령어 뒤에 해당 commit의 번호를 복사해서 입력하면 됩니다. 명령어를 입력하는 순간 해당 커밋이 내 브랜치에 복사됩니다. 어떤 브랜치든 상관 없어요.

 

git reset: 이전 상태로 돌아가고 싶을 때

git reset "옵션" "돌아갈 commit"

 

마지막 'git reset'은 아주 자주 쓰지는 않지만 이전 상태로 내 코드를 되돌리고 싶을 때 사용합니다. 실무에서는 사용할 일이 없을 것 같기도 하지만, force push 후 모든 커밋이 덮어씌워져 버린 후 이전 상태로 되돌아가고 싶을 때 아주 유용하게 사용합니다. force push를 했어도 내 로컬에는 이전 기록들이 남아있기 때문이에요. git reset에는 크게 세 가지 옵션이 있어 이 중 하나를 선택한 후, 마지막으로 돌아갈 commit을 입력하면 됩니다.

--hard

hard 옵션을 사용하면 돌아간 커밋 이후의 변경 이력은 모두 삭제됩니다.

--mixed

변경 이력은 모두 삭제하지만 변경 내용은 남아있습니다. 즉 unstage 상태로 코드는 남아있습니다.

--soft

변경 이력은 모두 삭제하지만 변경 내용은 남아있습니다. 그러나 stage 되어있습니다.

 

마지막으로...

출처: https://maily.so/1step/posts/6g0zmky3oql

 

우리가 개발하면서 만들어 내는 변경 사항들을 Git이 꼼꼼히 기록하고, 실수하면 되돌아 갈 수 있게 해주지만, 가장 확실한 방법은 GitHub, GitLab 같은 원격 저장소에 기록하는 것이겠죠? 언제나 컴퓨터나 프로그램에 문제가 생길 수 있기 때문에 열심히 작업하거나 일한 기록을 한 순간에 날리지 않도록 코드를 작성하면서 주기적으로 'git push'를 통해 중간 저장을 해주세요! 저 역시 한 시간에 한 번씩은 commit 또는 push를 하려고 노력하고 있답니다.

 

SSAFYcial SNS

인스타그램: https://www.instagram.com/hellossafycial
홈페이지: https://www.ssafy.com/

 

 

 

 

 

 

 

 

댓글