프로젝트의 버전 관리 도구 – 깃(Git) / 깃헙(Github)

git

VCS (Version Control System)

백엔드, 프론트엔드 개발 영역에 상관없이 모든 개발자들이 필수적으로 알아야 하는 요소로, ‘버전 관리’를 꼽을 수 있을 것입니다. 버전 관리란 파일의 변경 내역, 프로젝트 버전을 관리해주는 시스템입니다. 버전 관리는 실제 개발 프로젝트를 진행해보면 유용성을 쉽게 깨달을 수 있습니다.

새로운 기능을 추가하기 위해 이전에 사용하던 코드를 수정했다가 오류가 나서 급하게 되돌리거나, 새로운 디자인이 반응이 좋지 않아 이전 디자인으로 복귀해야할 때 등 개발을 하다보면 이전의 버전으로 개발 내용을 되돌리는 일은 생각보다 빈번하게 일어납니다.

이럴 때, 문서 작업을하거나 파워포인트 파일을 만들 때 ‘최종.ppt’, ‘최최종.ppt’, ‘찐최종.ppt’ 파일을 만들었던 것처럼 작업을 할때마다 프로젝트를 통째로 복사해서 보관하는 방법을 사용하는 건 어떨까요? 하지만 프로젝트가 점점 커질수록 용량을 차지하는 비용이 커지게 될 것이고, 실수로 버전을 저장하지 않거나 버전 별로 어떤 변화가 있었는지 따로 기록을 해놔야하는 등 여러모로 비용이 발생할 것입니다. 버전별로 하나의 기능을 변경하지는 않으므로 한 가지 기능에 대해 이전 버전으로 되돌릴 때 다른 기능들까지 롤백되는 문제도 있겠네요.

이러한 버전관리의 필요성과 문제점을 해결하기 위해 VCS가 등장하게 되었습니다. 개발자들은 VCS를 통해 일정 작업을 완료한 뒤에 파일의 수정, 추가, 삭제된 모든 내용과 내역을 편리하게 저장할 수 있습니다. 또한 모든 저장할 때마다의 모든 상태를 기억하고 있기 때문에, 내역을 확인하고 원하는 시점으로 되돌리기가 가능합니다. 이러한 내역들은 저장 공간을 효율적으로 사용해서 저장 공간을 많이 차지하지 않는 것이 핵심입니다. 또한 버전 관리 내역을 다른 사람들과 공유하기도 편리하기 때문에 협업을 하는 데 굉장히 편리한 도구이기도 합니다.

깃(Git)

VCS에는 여러가지 종류의 소프트웨어가 있지만, 가장 널리 사용되는 것은 깃(Git)입니다. 작업한 내용을 버전으로 저장하는 것을 커밋(commit)이라고 하며, 커밋을 할 때에는 커밋 메시지를 적어 작업한 내용이 어떤 것인지를 명시해주는 것이 좋습니다. 협업을 할 때에 커밋 메시지의 내용을 보고 수정 사항을 파악하기도 편리합니다.

깃에서 이전 버전으로 되돌아갈 때는 리셋(reset) 혹은 리버트(revert)를 사용합니다. 리셋의 경우 리셋 대상이 되는 커밋 시점 이후의 깃 이력들까지 아예 깨끗하게 삭제가 되며, 이전 버전으로 돌아가는 기능입니다. 리버트의 경우 리버트 대상 커밋만 되돌리고 싶을 때 사용합니다. 또한 해당 커밋으로 리버트했다는 커밋을 새로 남기게 되므로 리버트를 했다는 내역을 남길 수 있습니다.

깃에서는 브랜치(branch)라는 기능도 매우 중요합니다. 라이브되고 있는 서비스에 새로운 기능을 추가하기 위해서는 어떻게 해야할까요? 메인 서비스에 영향을 주지 않기 위해 테스트 환경에서 충분한 테스트를 거친 후에 출시하는 것이 필요합니다. 이러한 작업을 하나의 프로젝트 안에서 가능하게 하는 것이 브랜치입니다. 개발자는 같은 프로젝트 안에 메인 서비스를 복사한 브랜치를 생성할 수 있습니다. 그리고 해당 브랜치 안에서 새로운 기능의 코드를 짜고 테스트를 하면 됩니다. 충분한 테스트를 마친 후에는 메인 서비스에 머지(merge)하여 기능을 합쳐주면 됩니다.

깃의 다양한 기능들을 적절하게 활용하는 것은 혼자 개발을 할 때는 물론, 다른 개발자들과 협업을 하기 위해서 필수적입니다. 브랜치를 잘 활용하는 방법으로 git flow, github flow 등의 ‘브랜치 전략’이라는 것도 존재합니다. 앞서 설명한 것과 같은 기능들과 전략을 필요에 따라 활용할 수 있도록 숙지하는 것을 추천합니다.

깃헙(Github)

깃으로 관리한 파일 이력을 저장해서 다른 사람들과 공유할 수 있는 허브가 되어주는 서비스가 바로 깃헙(Github)입니다. 프로젝트 파일 전체를 업로드해서 드라이브를 통해 공유하는 기능뿐만 아니라 깃으로 관리한 이력까지도 같이 공유할 수 있기 때문에 어떤 코드 라인이 수정되었고, 추가되었는지 그 내역까지 자세히 확인할 수 있습니다. 작업 내용과 파일의 깃 이력을 깃헙에 업로드할 때는 푸시(push), 내려받을 때는 풀(pull)이라는 용어를 사용합니다.

Leave a Reply

Your email address will not be published. Required fields are marked *