Git 초보자가 써보는 Git 사용법

SCYu·2022년 10월 3일
0
post-thumbnail

시작하며

어떠한 프로젝트를 할 때, 간단한 규모가 아니라면 대부분 다른 사람들과 같이 하게 되고 만약 개발을 해야 할 일이 생긴다면 매번 모여서 코딩을 할 수는 없기에 각자의 공간에서 개발을 진행하게 된다. 이때 문제가 발생하게 되는데, 물론 각자 맡은 파트가 있겠지만 결국에는 하나의 프로젝트의 끝을 향해 달려가고 있는 상황이고, 이런 상황에서 자신이 맡은 부분을 개발하다 전체의 흐름을 놓치거나 실수로 다른 사람의 부분까지 건드릴 수도 있다. 이런 애로사항 속에서 등장한 것이 바로 분산형 버전 관리 시스템(VCS) Git이다.

Git의 개요

Git은 리누스 토르발스(Linus Benedict Torvalds)가 개발한 VCS로서, 매우 빠른 속도와 분산형 저장소 지원이 특징이다. 개발 비화로는 리누스가 기존에 쓰던 버전 관리 시스템인 BitKeeper가 리버스 엔지니어링을 이유로 리눅스 개발자들 일부를 제한하자 그 자신이 그냥 버전 관리 시스템을 만들어 쓰자라고 생각하고 개발했고, 이때 탄생한 것이 Git이라고 한다. 현재는 MS, 구글, 트위터, 모질라 재단 등에서 이용되고 있으며, 점유율도 다른 버전 관리 시스템들을 큰 편차로 따돌리고 1위를 유지하고 있다.

<많은 사람들이 헷갈리는데, Git과 Github는 다르다. 굳이 비유하자면 Git은 커피, Git은 커피샵에 비교할 수 있겠다>

Git의 시작

Git을 시작하려면, 일단 Git을 다운받아야 하지 않겠는가? 다음은 다운로드를 받기 위한 링크 주소이다:

Git 다운로드 바로가기: https://git-scm.com/downloads

Git의 기본 - 로컬에서

이제 우리는 설치를 끝내고 Git의 기본을 알아볼 준비가 끝났다. 그러면 로컬, 그러니까 내 PC에서 Git을 실행시키고 이를 통한 버전 관리를 해보자.

1. git init
프로젝트를 진행할 특정 폴더를 선택하고 이 명령문을 실행한다면 해당 폴더의 모든 진행 과정이 저장되는 공간(.git), 즉 저장소가 생긴다.

1.5. Git의 작업공간
내 로컬 저장소는 Git이 관리하는 3가지 작업공간으로 이루어져 있다. 실제 파일들이 존재하는 Working Directory, 이들을 저장소에 넣기 전 준비하는 장소인 Index(Staging Area), 마지막으로 Git 저장소인 .git이 있다.

2. git add <파일이름>
열심히 작업해 필요한 파일을 만들었다면, 이 명령어를 사용해서 파일을 Index로 옮길 수 있다. 또한 만약 옮길 파일이 많다면 git add * 명령어로 모든 파일을 한번에 Index로 옮길 수 있다.

3. git commit -m "commit에 대한 설명"
이 명령어를 통해 Index에 있는 파일을 Git 저장소에 저장(정확히는 변경사항을 저장)하면서 해당 commit에 대한 설명을 덧붙인다. 파일의 변경된 부분을 저장함으로서 프로젝트의 분기점을 만드는 것이다.

4. git commit -m "commit에 대한 설명"
이 명령어를 통해 Index에 있는 파일을 Git 저장소에 저장(정확히는 변경사항을 저장)하면서 해당 commit에 대한 설명을 덧붙인다. 파일의 변경된 부분을 저장함으로서 프로젝트의 분기점을 만드는 것이다.

4.5. git log
이 명령어를 통해 지금까지 있었던 분기점들에 대한 기록을 볼 수 있다. 여기선 각각의 분기점들의 아이디와 이에 대한 설명을 볼 수 있다.

5. git revert <지우고 싶은 commit id>
만약 앞서 했던 commit들 중에 지우고 싶은 commit이 있다면, 이 명령어를 써서 그 commit을 하기 전 상태로 돌아갈 수 있다. 이때 전 상태로 돌아갔다는 기록(즉, 새로운 commit)을 남기고 commit으로 돌아간다. 또한 commit id는 앞서 소개했던 git log로 확인한다. 이때 편의를 위해 전체 id 대신 앞의 6~7자리 정도만을 사용하기도 한다.

6. git reset --[명령어] <돌아가고 싶은 commit id>
앞선 revert와 비슷하지만, reset은 revert와는 달리 돌아가고자 하는 commit으로 돌아가면서 앞선 기록들을 전부 지우고 간다. 한마디로 돌아가고자 한 commit 이후에 한 commit들을 안한 것처럼 되는 것이다. 여기서 세부적으로 지정해줄 수 있는 명령어는 세가지가 있다:
  • soft 명령어는 commit된 파일들을 Index로(commit 하기 전 상태로) 되돌려 놓는다.
  • mixed 명령어는 별다른 옵션을 붙이지 않았다면 기본으로 설정되는 값이며, commit된 파일들을 Working Directory로(add하기 전 상태로) 되돌려 놓는다.
  • hard 명령어는 commit된 파일들을 아예 삭제한다.
6.5. Git에서의 pointer
여기서 pointer이란 말이 정확하지 않을 수도 있지만, 일단 pointer가 현재 가리키고 있는 branch의 분기점에서 우리는 작업을 이어갈 수 있다. 이 pointer는 옮겨갈 수 있으며, 앞서 있었던 reset이나 revert, 그리고 뒤에 나오는 switch 등등이 pointer를 내가 원하는 곳으로 옮겨주는 함수들이다.

7. git branch <만들고 싶은 branch 이름>
이 명령어로 main branch 말고 내가 원하는 branch를 현재 분기점에 연결해서 만들 수 있다. 다만 여기서는 단지 branch를 만들기만 했을 뿐이다.

8. git switch <옮겨가고 싶은 branch 이름>
앞선 명령어로 branch를 새로 만들었다면, 이제는 이 branch로 옮겨갈 때다. 이 명령어를 사용해 현재 main branch를 가리키고 있는 Pointer를 새로 만든 branch로 옮길 수 있다.

9. git checkout -b <새로 만들고 옮겨가고 싶은 branch 이름>
앞선 두 명령어를 쓰기 귀찮다면, 이 명령어가 훌륭한 대안이 될 수 있다. 이 명령어는 새로운 branch를 만들고 그 branch로 pointer를 옮겨주기까지 하기 때문이다!

10. git merge <합치고 싶은 branch 이름>
branch에서 신나게 작업을 하고, 이제 이 작업물을 main branch에 합칠 때가 왔다. 이 명령어를 사용해 main branch에 지금까지의 작업물을 합칠 수 있다. 이때 주의해야 하는 것은, 나 혼자 작업할 때는 상관 없지만 남들과 협업 중일 때는 내가 만든 branch에서의 작업물이 남들의 작업물을 건드려서 충돌(conflict)가 날 수도 있다는 것이다.

11. git branch -d <삭제하고 싶은 branch 이름>
main branch로 내가 만들 branch를 merge 시켰다면, 이제 내가 만들었던 branch는 더이상 쓸모가 없다. 이때 이 명령어를 이용해 branch를 삭제할 수 있다.

마치며

여기까지, 우리는 자신의 컴퓨터에서 만든 파일을 가지고 자신의 Git 저장소와 상호작용하는 법을 배웠다. 여기까지도 매우 중요하긴 하지만, Git을 이용하면 다같이 쓰는 원격 저장소에 각자의 저장소 내용을 push할 수도 있고 원격 저장소를 pull, clone 해올 수도 있다. 이렇게 다양한 기능이 있는 Git이지만, 여기까지 다루면 포스트가 너무 길어져 위의 내용은 다음 포스트에서 다루도록 하자.

<마지막에는 넣을 그림이 없어서 제일 좋아하는 강아지 웰시코기 사진을 넣었습니다.. 웰시코기는 사랑입니다~>

profile
Front+Back=Full

0개의 댓글