깃
중요한 보스전 직전에 세이브 파일을 따로 만들어 두고 언제든 과거로 돌아갈 수 있게 돕는 타임머신 기록장이에요.
정의 깃(Git)은 파일의 변경 이력을 시간 순서대로 꼼꼼히 기록해 주는 버전 관리 시스템이에요. 언제 어떤 문장을 추가하거나 삭제했는지 한눈에 추적할 수 있고, 작업 도중 실수가 생겼을 때 원하는 과거 시점으로 안전하게 되돌려 줘요.
끝없이 늘어나는 '진짜_최종' 파일의 구원투수
문서 작업을 하다 보면 '보고서_최종.docx', '보고서_진짜최종.docx', '보고서_진짜_마지막_수정.docx' 같은 파일로 바탕화면이 가득 찬 경험이 누구나 한 번쯤 있을 거예요. 기존에 작성한 소중한 내용이 날아갈까 봐 불안해서 파일 이름을 조금씩 바꾸며 복사본을 만들기 때문이에요.
깃은 이런 비효율적인 파일 복사 방식을 깔끔하게 해결해 줘요. 파일 이름을 하나로 유지하면서, 사용자가 원하는 순간마다 체크포인트(세이브 파일)를 사진 찍듯이 차곡차곡 기록해 두거든요.
이렇게 차곡차곡 쌓인 기록 덕분에 사용자는 언제든 시간 여행을 떠날 수 있어요. 새로운 내용을 잔뜩 작성했다가 전체 내용이 엉망이 되었더라도, 당황하지 않고 버튼 몇 번으로 어제 오후 3시 상태로 깨끗하게 되돌릴 수 있답니다.
독립된 평행우주를 만드는 '브랜치' 마법
혼자 작업할 때도 유용하지만, 여러 사람이 함께 하나의 프로그램을 만들 때 깃의 진가가 드러나요. 만약 여러 사람이 하나의 파일에 동시에 글을 쓴다면 서로의 작업물이 덮어씌워지거나 뒤엉켜 큰 혼란이 벌어질 수밖에 없어요.
깃은 이 문제를 '가지(브랜치)'라는 평행우주 개념을 사용해 똑똑하게 해결해요. 기존의 원본 줄기를 안전하게 보존한 상태에서, 개발자마다 자신만의 새로운 가지를 뻗어 나가 각자 맡은 기능을 자유롭게 개발할 수 있어요.
각자의 공간에서 실험과 개발을 모두 마친 뒤에는 이 가지들을 원래의 큰 줄기로 하나씩 합쳐요(머지). 만약 두 사람이 같은 줄의 코드를 다르게 고쳤더라도 깃이 충돌 지점을 정확히 알려주기 때문에 싸우지 않고 조율할 수 있어요.
조금 더 정확히 말하면 — 분산형 버전 관리
조금 더 정확히 말하면, 깃은 모든 참여자가 프로젝트의 전체 역사를 나누어 가지는 '분산 버전 관리 시스템'이에요. 중앙 서버에만 기록을 모아두는 옛날 방식과 달리, 프로젝트에 참여하는 팀원 모두의 컴퓨터에 전체 변경 기록의 복사본이 온전하게 복제돼요.
덕분에 비행기 안이나 시골처럼 인터넷이 전혀 연결되지 않는 오프라인 환경에서도 자유롭게 작업 이력을 남기고 과거 기록을 탐색할 수 있어요. 또한 중앙 서버가 벼락을 맞거나 고장이 나더라도, 팀원 중 한 명의 컴퓨터만 남아 있으면 프로젝트 전체 역사를 완벽하게 되살릴 수 있죠.
참고로 내 컴퓨터 안에서 일어나는 버전 관리를 돕는 도구가 깃이라면, 이렇게 기록된 프로젝트를 웹 공간에 올려 전 세계 동료들과 공유하고 협업할 수 있게 돕는 온라인 서비스가 바로 깃허브(GitHub)랍니다.
🤔 흔한 오해
깃(Git)과 깃허브(GitHub)는 완전히 같은 프로그램이다.
깃은 내 컴퓨터에서 변경 이력을 기록하고 관리하는 도구 프로그램이고, 깃허브는 깃으로 기록한 결과물을 인터넷에 올려 다른 사람과 공유하는 웹 서비스 플랫폼이에요.
🧺 일상에서 만나요
깃은 파일의 수정 역사를 세이브 포인트처럼 기록해 과거로 되돌려주고 여러 사람의 협업을 돕는 분산 버전 관리 도구예요.