포스트

Git과 Github

버전관리

버전 관리 시스템(VCS, Version Control System)이란 파일 모음의 변경 사항을 추적하는 프로그램이다. VCS의 목적 중 하나는 이전 버전의 개별 파일 또는 전체 프로젝트를 손쉽게 찾아볼 수 있도록 하는 것이다. 또 다른 목적으로는 다수의 팀원들이 하나의 프로젝트를 함께 작업하면서도 서로의 작업에 영향을 끼치지 않도록 하는 것이다.

버전 관리 시스템을 사용하면 현재까지 프로젝트에 반영된 모든 변경점을 볼 수 있으며, 누가 언제 변경했는지도 확인할 수 있다. 각 변경점에 대한 기록을 남겨 타 팀원이 쉽게 이해할 수 있도록 할 수 있으며, 전에는 어땠는지 확인할 수 있다. 브랜치라는 것을 만들어 실험적으로 업데이트를 반영할 수 있으며, 이 기능은 여러 사람들이 동시에 하나의 프로젝트에 작업을 할 수 있도록 해준다.

Git은 아주 빠르고 다재다능한 오픈소스 버전 관리 시스템으로, 현대에서는 가장 많은 개발자들이 사용하고 있다.

vcs
Git Flow로 보는 버전 관리 - 출처: Evans Library

용어

Git을 이해하기 위해서는 용어에 대한 이해가 선행되어야 한다.

  • Working Tree: 작업 중인 프로젝트가 포함된 디렉토리 및 파일 집합
  • Repository(Repo): Git이 프로젝트의 모든 이력과 메타데이터를 저장하는 작업 트리의 최상위에 위치한 디렉토리.
  • Hash: 해시함수로부터 생성된 숫자로, 파일이나 다른 객체의 내용을 표현한다. Git은 해싱을 통해 직전 파일과 비교하여 파일이 변경되었는지 알 수 있다.
  • Commit: 동사로 사용되는 경우에는 커밋 객체를 만드는 것을 의미한다. 변경 사항을 커밋하여 다른 사람들도 이를 볼 수 있다.
  • Branch: 일련의 연결된 커밋을 이름으로 지정한 것. 레포를 처음 초기화할 때 생성되는 기본 브랜치를 Main이라고 하며, 현재 브랜치의 헤드는 HEAD라고 한다. Git 브랜치는 개발자가 독립적으로 작업하고 추후에 변경 사항을 기본 브랜치에 병합할 수 있도록 하는 기능을 제공한다.
  • Remote: 다른 Git 레포에 대해 이름을 부여하여 참조하는 것이다.

Github

처음에는 Git과 Github가 같은 것인 줄 알았다. 둘의 차이점을 살펴보자:

Git은 버전 관리 시스템으로, 다수의 개발자와 다른 컨트리뷰터가 사용하여 프로젝트에 작업할 수 있도록 해주는 프로그램이다. Github는 Git을 핵심 기술로 사용하는 클라우드 플랫폼이다. Github는 프로젝트의 협업 과정을 단순화시키며 웹사이트를 제공하여 추가 기능들을 제공한다.

Github가 제공하는 추가 기능들로는 대부분 생산성과 업무관리 측면에서의 이점을 준다:

  • Issues
  • Discussions
  • Pull requests
  • Notifications
  • Actions
  • Forks

기본 Git 명령어

git status : 현재 워킹 트리의 상태를 보여준다.

git add : 특정 파일들의 변경점들을 git이 트래킹하도록 한다. 이러한 변경 사항을 Staging이라고 하는데, git add를 사용하여 커밋을 준비하기 위해 변경 사항을 스테이징한다. git add를 통해 추가되었지만 아직 커밋되지 않은 모든 변경 사항들은 스테이징 영역에 저장된다.

git commit : 스테이징된 변경점들을 스냅샷으로 저장한다.

git push : 로컬 저장소에서 커밋된 변경 사항들을 원격 저장소(github등)으로 업로드하는 데 사용된다. 사용법은 git push [remote-name] [branch-name]이며, 기본적으로 리모트의 이름은 origin으로 되어있다.

추가 명령어는 Git Cheatsheet에 잘 정리되어 있다.


이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.