흔히 디자인 파일, ppt 등을 만들 때 자주 볼 수 있는 파일 이름 형식들을 표현한 밈입니다.
개발을 할 때도 작업 중인 파일을 중간에 수정하거나, 아예 갈아엎고 처음부터 다시 만들거나, 최종 컨펌된 파일을 수정하는 경우가 자주 생길 것입니다. 보통 작업하던 파일을 편집 전 상태로 되돌리고 싶을 때 사용하는 방법은 편집하기 전에 파일을 미리 복사해 두는 방식이죠. 예를 들면 파일과 폴더명 뒤에 편집한 날짜를 붙여 주는 방식.
하지만 파일을 편집할 때마다 매번 손수 복사하는 일은 번거롭기도 하고 실수할 가능성도 매우 높아집니다. 특히나 여러 사람이 같은 파일로 동시에 작업할 때는 더욱 더 이 위험이 더 커지죠.
그렇다면 어떻게?
개발자들은 이 때 버전 관리를 사용합니다.
버전 관리를 좀 더 직관적으로 설명하자면, 각 버전 별로 변경된 이력들을 저장하는 작업을 일컫습니다.
하나하나 추가되는 기능들의 변경 이력을 저장함으로서, 이전 버전으로 되돌아가야 할 때 이전의 변경 이력들이 기록돼있는 곳으로 이동하는 형식으로.
따라서 누가 어떤 파일을 추가, 수정, 삭제했는지도 확인이 가능하고, 이는 아주 중요한 장점입니다.
Git이란 개발자의 코드를 효율적으로 관리하기 위해서 개발된 ‘분산형 버전 관리 시스템’ 입니다. 버전 관리 시스템의 기본적인 모습은 이 그림과 같습니다.
이 그림 처럼 하나하나 날짜별로 어떤 파일이 어떻게 바뀌었는지 확인이 가능합니다. 이렇게 특정 시점에 생성된 백업 복사본을 스냅샷이라고 하는데, 이렇게 하나 하나 스냅샷을 만들어 주는 작업을 commit이라고 합니다.
commit이라는 기능을 통해서 변경 사항에 대한 스냅샷이 만들어지고 이전의 기록들에 대한 추적이 가능하다면 버전 관리 뿐만 아니라 회사에서 협업을 할 때도 굉장히 유용하겠죠?
Git에서는 이렇게 소스 코드가 변경된 이력을 쉽게 확인할 수 있고, 특정 시점에 저장된 버전과 비교하거나 특정 시점으로 되돌아갈 수도 있습니다.
Git을 통해서 버전 관리를 할 수 있다는 것은 알겠어요. 그렇다면 Github은 뭔가요?
Git은 소스 코드 기록을 관리하고 추적할 수 있는 버전 관리 시스템입니다.
그리고 Github은 Git Repository를 관리할 수 있는 클라우드 기반 서비스입니다.
즉 Git으로 버전을 관리하는 폴더에 대해서 Github을 통해 여러 사람들이 공유하고 접근할 수 있으며, Github에서 Code Review 등을 통해 협업이 가능합니다. 수많은 오픈 소스 프로젝트들이 GitHub로부터 호스팅되고 있어 누구든 자유롭게 기여할 수 있죠.
내 컴퓨터에서 작업하던 파일들이 있습니다. 만약 내 컴퓨터가 고장이 난다면? 잘못해서 파일들을 모두 삭제해 버린다면 어떻게 될까요? 이런 상황을 대비해 다른 컴퓨터에 백업본을 저장해 둔다면 내 파일들을 복구시킬 수 있겠죠.
이것을 대신 해 주는 서비스들 중 대표적인 서비스가 바로 Github입니다.
Github은 내 컴퓨터에서 Git으로 관리하는 프로젝트를 올려둘 수 있는 사이트입니다.
내가 작업하는 소스 코드 폴더가 버전 관리를 받게 하기 위해서는 내 폴더를 Git의 관리 아래에 두어야 하는데,
Git으로 관리되는 폴더를 Git repository 라고 합니다.
Git repository 는 Remote Repository와 Local Repository 두 종류의 저장소를 제공합니다.
작업할 때는 Local Repository에서 할 수 있고 내가 작업한 코드를 공유하려면 Remote Repository에 업로드해 여러 사람이 함께 공유할 수 있습니다. 그리고 다른 사람이 Remote Repository에 올려 놓은 소스 코드를 내 Local Repository 로 가지고 올 수도 있죠.
이에 대한 자세한 내용은 이후 포스트에서 다루겠습니다.
전세계 개발자들 대다수는 Git을 사용하고 있습니다. 그리고 상당수의 기업들에서 IT 개발자들을 채용할 때 개인 Github 계정을 요청하기도 합니다. 작업한 프로젝트들을 내 Github 계정에 올려 놓으면 개발자 구직을 할 때 포트폴리오로도 활용할 수가 있으니, 자신의 결과물을 깃헙에 커밋을 계속 해놓으면 개발자로서의 커리어에 큰 도움이 될 것입니다.
https://contmp.de/meme/have-you-tried-running-git-blame-ohnevermind/
https://memegenerator.net/instance/63739853/luke-skywalker-no-i-forgot-to-save-file-nooooooooooo
https://slysoftware.tistory.com/12