KIM KYUREE

Front-end Developer

git은 왜 필요한가?

DEV-LOG/ETC

Git?

git이 왜 필요한지 알기 위해서는 먼저 git이 뭔지 알아야 한다. 하지만 자세한 설명은 정보의 바다인 인터넷에 조금만 찾아보면 워낙 잘 나와있을 테니까 생략하고 간단하게만 알아보고자 한다. git은 분산 버전 관리 시스템을 말하는 것으로 소스코드를 쉽게 관리하기 위해서 생겨났다.

소스코드의 관리가 왜 필요하죠?

위에서 소스 코드를 쉽게 관리하기 위해서 생겨난 것이 git이라고 했다. 그렇다면 소스코드의 관리는 왜 필요할까?

웹사이트 및 웹 애플리케이션의 (이하 서비스) 규모가 점점 커지고 있고, 이에 따라 수많은 개발자들이 협업을 통해 서비스를 개발하고 있다.

그런데 git을 사용하지 않고 여러 개발자가 코드를 각자 관리하고 있다고 생각해 보자. 실제로 개발된 서비스를 배포하기 위해서는 각자가 가지고 있는 코드들을 취합하는 과정을 거쳐야 하고 이 과정에서 온갖 에러가 날 것이다. 변수 이름이 중복되는 문제부터 시작해서 어떤 문제가 발생하게 될지는 아무도 모른다. 그리고 이 것을 해결하기 위해서는 더 많은 시간이 걸릴 것이다. 그런데 추가적으로 이 코드를 취합하는 와중에도 여러 개발자들은 각자의 개발을 또 진행하고 있을 것이고, 그렇게 진행하다 보면 개발은 결국 엉망진창이 될 것이다. 결국 소스코드는 여러 개발자가 함께 관리하고 비교적 실시간으로 관리되어야 한다는 생각을 하게 된다.

이 것을 가능하게 해주는 것이 git이다. git을 사용하면 내가 작성한 일정한 단위의 코드를 add, commit, push를 통해서 다른 개발자들과 실시간(사실 완벽한 실시간은 아니겠지만)으로 반영하여 공유하고, 다른 개발자들이 작성한 코드도 공유하여 반영할 수 있게 된다. 또한 코드들이 반영되었을 때 문제가 생기면 수정을 하기에도 용이하며, 문제가 없다고 판단하여 배포했지만 결과적으로 문제가 생겼을 경우 이전 버전으로 돌아가는 것도 좀 더 쉽게 가능하게 된다.

참고로 많이 사용하는 github은 git을 가리키는 절대적인 명칭이 아니라 git을 이용한 서비스를 제공하는 웹 사이트(혹은 웹 애플리케이션)이다. github 외에도 gitlab, bitbucket 등이 있다.

git 사용법

혼자서 프로젝트를 진행할 때

  1. 프로젝트에 깃을 설치한다. (git init)
  2. 개발을 진행한다. (개발은 의미 있는 단위로 구분하여 진행한다.)
  3. 단위별 개발이 완료되면 작성한 파일을 선택한다. (git add)
  4. 선택한 파일이 어떠한 개발을 진행한 파일인지 설명을 적어준다. (git commit 메시지 작성)
  5. 선택하고 설명까지 작성한 파일은 git repo에 보낸다. (git push)

이후 2 ~ 5를 반복하여 개발을 완료한다.

위에 적어둔 순서가 git을 사용하는 큰 틀이라고 생각하면 된다. 물론 git을 혼자 사용하게 된다면 위에 작성된 방법만으로도 충분할 것이다. 하지만 만약 다른 개발자들과 협업 과정에서 사용하게 된다면 위의 과정에 추가되거나 달라지는 몇 가지 과정들이 더 있다.

여러 사람이 협업을 통해 프로젝트를 진행할 때 

  1. 팀장님 혹은 개발 메인 repo를 fork 한 뒤 fork 된 repo를 내 로컬 환경에 clone 한다.
  2. 개발을 진행한다. (개발은 의미 있는 단위로 구분하여 진행한다.)
  3. 단위별 개발이 완료되면 작성한 파일을 선택한다. (git add)
  4. 선택한 파일이 어떠한 개발을 진행한 파일인지 설명을 적어준다. (git commit 메시지 작성)
  5. 선택하고 설명까지 작성한 파일은 git repo에 보낸다. (git push : 내가 포크해온 repo로 보내짐)
  6. 내가 fork 한 레포에서 pull request를 개발 메인 repo로 보낸다.
  7. 다른 사람들이 작성한 코드가 있다면 해당 코드를 다운로드한다. (git pull)
  8. 다운로드한 코드가 내가 작성한 코드와 충돌(conflict)한다면 충돌을 해결하고 합친다. (merge)

이후 2 ~ 8을 반복하여 개발을 완료한다.

'DEV-LOG > ETC' 카테고리의 다른 글

git 프로젝트를 시작하는 방법  (0) 2023.06.09