분산 버전 관리 Git
SVN, CVS 등의 중앙 집중식 버전 관리 시스템도 있지만 최근에는 분산 버전 관리 시스템이 더 널리 사용되고 있습니다. 분산 버전 관리 시스템은 개발자에게 있어서 코드 작업을 유용하게 관리해주는 도구입니다. 대표적인 분산 버전 관리 시스템인 Git 설치 및 명령어와 GitHub 연동에 대해서 알아보겠습니다.
Git 정의 및 특징
분산 버전 관리 시스템(Distributed Version Control System)에서 대표적이면서 개발자들에게 널리 사용되는 것은 Git입니다. 리눅스 커널 개발에서 시작되었고 Git은 중앙 집중식 저장소가 아닌 분산 구조를 가지고 있습니다. 또한 파일 시스템 기반의 구조를 가지고 있어 브랜치 생성, 병합, 커밋 등의 작업을 빠르게 진행시킬 수 있습니다. 오픈 소스로 개발자들의 작업 생성과 병합이 용이하며 버전 관리에도 상당히 막강한 기능을 가지고 있습니다. 파일 변경 사항을 스냅샷 형태로 저장하여, 이전 버전으로 복원이 쉽고 안전한 버전 관리가 가능합니다.
Git 설치
우분투에서 Git 설치는 apt-get update, apt-get install git으로 간편하게 설치가 되고 윈도우는 git-scm 사이트에서 다운로드 하여 설치 후 데스크톱 환경에서 사용이 가능합니다. git설치경로
다운로드하여 실행 파일을 클릭하여 기본값으로 설치 진행을 합니다.
기본 정보를 확인해보자. (git config –list)
git config –global user.name “이름” 및 git config –global user.email “이메일” 설정을 할 수 있다. 설정을 한 후 다시 git config –list로 확인을 해보면 설정 항목이 추가된 것을 알 수 있다. (user.name, user.email)
Git 명령어
코드 변경 사항을 효과적으로 추적하고 관리할 수 있게 해주기 위해 Git에서는 명령어를 제공합니다. 개발자들이 코드 저장소를 생성, 복제, 수정하는데 사용하는 다양한 명령어들을 알아보고 이 명령어로 개발 프로세스를 체계적으로 관리할 수 있습니다.
기본 명령어
git init : 현재 디렉토리를 기준으로 버전 관리 저장소 시작
git add : 커밋 대상(staging)에 해당 파일 추가(디렉토리 내의 해당 파일이 git으로 관리되도록 추가)
git commit : staging area 영역에 놓인 내용을 로컬 저장소에 커밋
브랜치 명령어
브랜치 생성 : git branch 브랜치이름
브랜치 삭제 : git branch -D 브랜치이름
브랜치명 변경 : git branch -m 원래이름 바꿀이름
원격 브랜치 이동 : git checkout 브랜치이름(로컬 브랜치만 바꿀 경우에는 git switch 브랜치이름)
브랜치 생성과 체크아웃 한번에 하기 : git checkout -b 브랜치이름
로그 및 차이 명령어
커밋 내역을 확인 – log
작업 트리 파일, 스테이지에 있는 파일, 저장소에 있는 최신 커밋 파일 사이의 차이를 비교 및 출력 – diff
GitHub 저장소
Git을 로컬 저장소에서만 활용하는 것이 아닌 협업을 하려면 원격 저장소가 필요합니다. 원격 저장소를 사용하면 프로젝트 작업물을 안전하게 백업을 할 수 있고 팀과 공동작업이 가능합니다.
GitHub 정의
github는 분산 버전 관리 시스템인 git을 기반으로 하는 웹 호스팅 서비스입니다.
Git 연동
git은 버전 관리 도구이고 github는 git을 사용하는 플랫폼이라고 할 수 있습니다. github는 원격 서버에서 호스팅되어 개발자들이 협업할 수 있는 환경을 제공합니다. 내 소스들을 안전하게 깃허브에 저장하고, 팀원들과 협업을 용이하게 하며 또한 github 공간에서 전세계 개발자들의 오픈소스 코드를 확인할 수 있습니다.
New(New Repository) 클릭, Create a new repository 내용 작성하기
Repository name : 저장소 이름(프로젝트명), public은 모든 사용자에게 공개이고 private은 내가 지정한 사용자에게만 공개합니다.
원격저장소 관련 명령어
git remote ‘원격 이름’ ‘저장소 주소’ : 리모트 저장소의 이름을 지어줄 수 있습니다.
로컬 저장소의 변경 사항(커밋 내역)을 원격 저장소에 업로드 – git push -u ‘원격 이름’ ‘브랜치’
원격 저장소 데이터를 내 로컬 디렉토리에서 이용할 수 있게 복사해 가져오기 – git clone ‘저장소 주소’
원격 저장소의 최신 변경 사항을 로컬 저장소로 가져오기 – git pull ‘원격 이름’ ‘브랜치’
clone 명령은 내 로컬 작업내용이 원격 저장소의 내용을 가져오기 때문에 기존 작업했던 내용들은 없어집니다. pull 명령은 현재 브랜치와 병합해주고 다른 작업 파일은 건들지 않습니다.
원격 저장소의 브랜치와 커밋들을 로컬 저장소와 동기화 – git fetch ‘원격 이름’ ‘브랜치’
추가한 원격 저장소의 목록 확인 – remote, 특정 원격 저장소의 정보 확인 – remote show ‘원격 이름’
원격저장소 이름 변경 – remote rename ‘old’ ‘new’, 원격저장소 제거 – remote rm ‘원격 이름’
마치며
Git 저장소에는 프로젝트의 모든 변경 사항이 기록되어 있습니다. git log 명령어로 commit 내역을 확인할 수 있습니다. 커밋 메시지, 작성자, 작성날짜 까지 모든 정보를 통해 프로젝트의 진행 과정을 파악할 수 있습니다. git branch –all 명령어로 모든 브랜치를 확인하고, git log –graph 명령어로 브랜치 간의 관계를 시각화할 수 있습니다. 또한 git show “커밋 해시” 명령어로 특정 커밋의 변경 내용을 자세히 확인할 수 있습니다. 마지막으로 git shortlog 명령어로 작성자 혹은 날짜 기준으로 기여도 분석도 가능합니다. 이처럼 git은 프로젝트의 처음과 마지막 모든 프로세스를 확인이 가능하기에 프로젝트 관리와 협업에 큰 도움이 됩니다.