[Git, Github] Git과 Github 개념

Git과 Github?

개발을 접해본 사람이라면 대부분 들어봤을 Git과 Github는 간단히 말해 협업 및 버전 관리 툴이다. 

이 외에도 버전 관리 툴은 SVN(Subversion), Mercurial 등 다양한 도구가 존재하지만 현재 가장 널리 사용되고 있는 도구는 단연 Git이다. Git은 강력하면서도 다루기가 까다로울 수 있지만 한 번 익숙해지면 그 효율성을 알게 될 것이다.

저는 회사에서 SVN만 사용하다가 Git으로 전환하는 데 적응하기 어려웠던 경험이 있습니다..

 

Git (로컬 분산 버전 관리)

Git은 분산 버전 관리 시스템(Distributed Version Control System, DVCS)이다.

개발자가 작성한 코드의 변경 사항을 기록하고 이 기록을 바탕으로 버전을 관리할 수 있도록 도와준다.

Git을 사용하면 여러 명의 개발자가 동시에 작업해도 각자의 코드가 충돌 없이 독립적으로 관리되며 필요할 때마다 특정 시점의 상태로 되돌아갈 수 있다.

일반적인 버전 관리 vs. Git 버전 관리

일반적인 버전 관리: 파일 단위로 버전을 관리하며, 중복된 내용이 쌓여 용량이 비효율적으로 사용된다.
Git 버전 관리: 파일 전체를 저장하는 대신 변경 사항(Diff)만을 저장하므로 용량을 효율적으로 사용할 수 있다.

주요 기능

깃 브랜치 동작원리깃 스테이징 동작원리

  • 로컬 저장소 관리: Git은 모든 개발자가 로컬에 독립된 저장소를 가지고 작업할 수 있게 한다. (중앙 서버 없이도 각자가 코드의 버전을 관리 가능)
  • 커밋: 코드를 변경한 후 이를 저장할 때 사용하고 각 커밋에는 변경된 내용과 함께 메타데이터(작성자, 시간, 메시지 등)가 포함된다.
  • 브랜칭: 브랜치는 코드를 독립적으로 개발하기 위한 방법이다. 새로운 기능 개발, 버그 수정 등을 위한 별도의 작업 공간을 만들 수 있다. (각 브랜치는 서로 독립적으로 다른 작업에 영향을 주지 않고 개발을 진행할 수 있음)
  • 병합(Merge): 브랜치에서 작업한 내용을 다시 메인 브랜치나 다른 브랜치로 합칠 때 사용한다.
  • Staging Area: Git은 변경된 파일을 바로 커밋하는 것이 아닌 먼저 스테이징 영역 (Staging Area)에 추가하여 이후 커밋할 수 있게 한다. 이를 통해 어떤 변경 사항을 커밋할지 선택적으로 관리할 수 있다.
  • 로그(Log): 로그를 통해 커밋 히스토리를 확인할 수 있습니다. (변경 사항 추척 가능)

Github (원격 저장소 및 협업 관리 플랫폼)

Github는 Git을 기반으로 하는 원격 저장소 서비스이다.

개발자들이 로컬에서 작업한 내용을 원격 저장소에 업로드하여 공유하고 협업할 수 있도록 돕는 플랫폼이다.

Github는 버전 관리 외에도 협업을 위한 다양한 도구를 제공하여 팀이 함께 작업하는 데 최적화된 환경을 제공한다.

주요 기능

  • 원격 저장소: Github는 로컬 저장소를 원격에 저장하고 이를 통해 여러 개발자가 동일한 저장소에 접근할 수 있도록 한다.
  • Pull Request(PR): 개발자가 작업한 내용을 검토하고 병합하기 전에 코드 리뷰를 받기 위해 사용한다. (PR은 팀원 간의 협업과 코드 품질 향상에 중요)
  • 이슈 트래킹: 프로젝트에서 발생하는 버그, 개선 사항, 새로운 기능 요청 등을 관리할 수 있는 도구이다.
  • Github Actions: CI/CD(Continuous Integration/Continuous Deployment)를 지원하는 기능으로 코드의 자동 빌드, 테스트, 배포를 설정할 수 있다. (코드 품질 유지 및 배포 자동화 용이)

 

Git과 Github는 이 외에도 다양한 기능이 있고 다양한 용도로 사용됩니다. 단순히 팀 협업이 아닌 저장소 용도로 사용하기도 하고 개인이 사용하는 방식에 따라 여러분야에서 사용될 수 있습니다. 이 외에 git과 github의 다양하고 자세한 내용들은 다른 포스팅에서 다시 다루도록 하겠습니다.