git을 사용하는 이유와 방법

HYUN·2021년 1월 20일
2

git

목록 보기
1/1
post-thumbnail

왜? git

개발자들에게 필수라는 Git을 사용하는 이유가 뭘까
이유를 알고 사용하는 것과 모르고 사용하는 것에는 분명한 차이가 있습니다.

개발을 하다 보면 어떤 기능을 빼고 더하고 등 수정하는 과정은 필수입니다.
하지만 이전의 기능을 다시 되돌리고 싶을 때도 있고 만들어둔 기능이 없던 전 버전으로
되돌리고 싶을 때도 분명 있을 겁니다.
기능의 추가와 같이 save는 필수라는 겁니다. 나중에 어떤 기능이 필요하고 또 필요 없을지 모르는 거니까요.


git을 사용한다면 위와 같은 사진처럼 많은 파일들을 만들 필요가 없습니다.
번거롭고 용량도 꽤나 많이 차지합니다. 혹은 실수가 있을 수도 있습니다.

git은 내 코드 혹은 다른 개발자의 코드가 변경된 이력을 쉽게 확인할 수 있고, 특정 시점에 저장된 버전과 비교할 수 있으며 특정 시점으로 돌아갈 수도 있습니다.



git은 협업에서도 크게 도움을 줍니다.

큰 프로젝트는 여러 명의 개발자가 역할을 나눠 함께 작업을 하는 경우가 많습니다.
해당 프로젝트를 테스트해보고 싶다면 각자 맡았던 파일들을 하나의 폴더에 모아야 하는데 git을 사용한다면 내 코드와 다른 사람의 코드를 합치는 게 쉽고 내 코드와 다른 사람의 코드가 충돌한다면 코드들을 합칠 수 없도록 경고 메시지를 통해 어떤 부분에서 충돌이 났는지 까지 알려줍니다.

그렇기 때문에 내 코드 혹은 다른 이의 코드를 덮어써버리는 실수를 사전에 예방할 수 있습니다.



어떻게? git

왜 사용하는지 알고 있지만 어떻게 사용하는지 모른다면 의미가 없습니다.

우선 git에는 저장소(Git repositiory)라는 것이 있습니다.저장소라는 의미 그대로 파일 혹은 폴더를 저장해 두는 곳입니다. 우리가 일반적으로 파일을 저장하는 것과 git 저장소에 저장하는 차이는 파일이 변경 이력 별로 구분되어 저장된다는 점입니다.

비슷한 내용의 파일이라도 내용 전체가 동일하지 않으면 다른 파일로 구분하기 때문에 파일을 변경 사항 별로 구분해서 저장할 수 있습니다.




git은 원격 저장소와 로컬 저장소 두 종류의 저장소를 제공합니다.

  • 원격 저장소(Remote Repository): 파일이 원격 저장소 전용 서버에서 관리되며 여러 사람이 함께 공유하기 위한 저장소입니다.
  • 로컬 저장소(Local Repository): 내 PC에 파일이 저장되는 개인 전용 저장소입니다.

작업은 보통 내 PC의 로컬 저장소에서 합니다. 작업이 끝나면 혹은 작업 내용을 공유하고 싶다면 로컬에 있는 작업 내용을 원격 저장소에 업로드할 수 있습니다. 혹은 원격 저장소에 있는 다른 개발자의 작업 내용 또한 가져올 수 있습니다.

협업을 할시에는 원격 저장소에 있는 대표 프로젝트 파일을 모든 개발자가 개인의 로컬에 가져온 뒤 각자 맡은 기능 개발을 진행합니다. 마찬가지로 작업이 끝나면 혹은 작업 내용을 공유할 때 원격 저장소에서 각자의 코드들을 업로드할 수 있습니다.




내 컴퓨터에 로컬 저장소를 만드는 방법은 두 가지가 있습니다.

첫번째 방법은 저장소를 새로 만들어서 사용하는 것입니다.

git init
Start a new git repository

다른 하나는 원격 저장소를 복제하는 방법입니다.


GitHub(혹은 GitLab, Bitbucket 등)를 이용해서 원하는 프로젝트를 ForkClone으로 내 로컬로 가져올 수 있습니다.

원격 저장소를 복제하면 내 컴퓨터에 해당 저장소의 로컬 버전이 생성되어 원래 코드베이스에 영향을 주지 않고 내 컴퓨터에서 개발을 진행할 수 있습니다.


이러한 원격 저장소를 복제하는 방법은 추가로 개발한 내용을 원격 저장소에 업로드할 수 있고 반대로 원격 저장소 즉, 원본에 내용이 추가 및 삭제로 변경된다면 원본에 해당하는 내용을 가져올 수 있어 효율적으로 개발을 진행할 수 있고 이는 협업에서도 매우 큰 장점으로 작용합니다.
git push git pull

  • git clone '저장소url' : 해당 url의 원격저장소를 clone하여 local 환경에 추가합니다.
  • git remote add '저장소별칭 저장소url' : 로컬 저장소와 원격 저장소를 연결합니다.
  • git remote -v : 원격 저장소와의 연결 상태를 확인합니다. 연결된 저장소들의 별칭과 url을 확인할 수 있습니다.
  • git pull '원격저장소별칭 로컬브랜치' : 원격저장소를 로컬 브랜치로 가져와 병합합니다.
  • git push '원격저장소별칭 로컬브랜치' : 지정한 로컬 브랜치를 원격 저장소로 push합니다.


working directory 혹은 working tree는 말 그대로 개발을 진행하는 폴더라는 개념입니다.

git의 커밋 작업은 작업 저장소(working directory)에 있는 변경 내용을 저장소에 바로 기록하지 않습니다.

staging area 혹은 Index라는 가상의 공간에 기록하고자 하는 변경사항을 git add 명령어를 통해 추가해야만 합니다.

이러한 작업을 스테이징-stage라고 표현합니다.

가상의 공간에 추가해준 변경 사항들만이 commit을 통해 추가가 가능합니다.

반대로 원하지 않는 변경 사항들은 제외하고 commit할 수 있다는 말도 됩니다.

  • git status : 저장소의 상태를 확인합니다.
  • git add <파일> : 해당 파일을 staging area에 추가합니다.
  • git add . 을 사용하면 수정한 모든 file 을 추가합니다.

    하지만 무조건 좋은 방법은 아닙니다.

  • git commit -m '커밋 메시지' : staging area에서 local repo로 최종적으로 짧은 메시지를 포함해 저장합니다.

커밋(commit)을 하게 되면 이전 커밋 상태부터 현재 상태까지의 변경 이력이 기론된 커밋이 만들어 집니다.

커밋은 시간순으로 차례대로 저장되기 때문에 과거 변경 이력과 내용을 알 수 있습니다.
또한 영문과 숫자로 이루어진 40자리의 고유의 이름이 붙기 때문에 해당 고유의 이름을 가지고 각 커밋을 구분할 수 있습니다.

profile
자바스크립트를 좋아합니다. | 이유를 알고 있는 것과 모르는 것의 차이는 분명하다.

0개의 댓글