버전 관리 초보자를 위한: 펜드라이브 비유

발행: (2025년 12월 29일 오후 03:59 GMT+9)
6 min read
원문: Dev.to

Source: Dev.to

버전 관리 초보자를 위한 펜드라이브 비유 표지 이미지

Life Before Version Control

Imagine this: you are a developer in the 1990s, building software. There is a bug that you cannot fix, and you want your colleague John to help you. You already have the source code. How do you transfer the code to him?

Source:

펜드라이브 문제

아마도 펜드라이브, 하드 디스크, 이메일, 혹은 CD를 이용해 코드를 복사해서 John에게 전달할 수 있습니다. John은 코드를 자신의 시스템에 복사하고 작업을 시작합니다. 버그를 수정한 뒤 John은 당신의 오래된 코드를 삭제하고, 업데이트된 버전을 펜드라이브에 복사해 다시 당신에게 줍니다. 당신은 펜드라이브에서 코드를 복사하고 원래 버그가 수정된 것을 확인하지만, 코드의 예상치 못한 부분에 또 다른 버그가 존재함을 발견합니다.

Image of pendrive analogy

final_final_v2가 절대 최종이 아니었던 이유

이 시점에서 당신은 혼란스러울 것입니다. 새로운 버그가 당신 탓인지 John의 탓인지? 확인할 방법이 없습니다.

폴더 이름이 혼란스러워짐

두 개발자는 변경이 있을 때마다 펜드라이브에 있던 옛 코드를 삭제하지 않기로 결정했습니다. 대신 새 코드를 final이라는 이름으로 추가하기로 했습니다.

폴더 이름 문제

코드베이스가 커지면서 final_v2, latest_final, latest_final_final, latest_final_super_final 등 혼란스러운 이름들이 많이 등장합니다.

팀이 더 나은 시스템이 필요했던 이유

이제 다시 혼란스러워졌습니다. 최신 코드는 어느 것인가요? 누가 어느 부분을 변경했나요? 왜 예상치 못한 버그가 발생하나요?

이러한 문제는 이미 두 명의 개발자에게도 고통스럽습니다; 세 번째 개발자 Will을 추가한다고 상상해 보세요. 혼란은 배가됩니다.

코드 변경 사항을 추적할 수 없어서 좌절하고 있습니다. 그래서 각 추가 또는 재작성과 그 변경의 작성자를 기록하는 소프트웨어를 만들기로 결심합니다. 이는 다중 파일·폴더 문제를 해결합니다: 개발자 수에 관계없이 모두가 같은 폴더에서 작업할 수 있습니다.

그 소프트웨어는 **Git**이며, **Linus Torvalds**가 만들었습니다.

Source:

버전 관리란 무엇인가?

버전 관리는 파일에 대한 변경 사항을 시간 순으로 추적하는 시스템으로, 무엇이 바뀌었는지, 누가 바꾸었는지, 언제 바뀌었는지를 보여줍니다.

버전 관리를 사용하면 다음을 할 수 있습니다:

  • 코드의 모든 변경 사항을 추적
  • 혼란스러운 final_final_v2 폴더 제거
  • 실수로 인한 덮어쓰기 방지
  • 전체 변경 이력 제공
  • 협업 가능
  • 정확히 무엇이 바뀌었는지 표시
  • 각 변경의 작성자 식별

펜드라이브 한계

버전 관리를 사용하더라도 여전히 펜드라이브를 사용할 수 있습니다. 펜드라이브에는 항상 최신 코드가 들어 있으며, 한 번에 한 명의 개발자만 작업할 수 있습니다. 다른 사람들은 오래된 복사본을 가지고 있어 변경을 할 수 없습니다.

중앙 집중식 저장소

이를 해결하기 위해 Git 저장소를 호스팅하는 중앙 서버를 설정합니다. 서버에는 항상 최신 코드 버전이 저장됩니다. 모든 개발자는 서버에서 코드를 pull하고, 변경을 한 뒤 push합니다.

Overview of Git and GitHub

이렇게 하면 모든 개발자가 동시에 작업할 수 있으며, 서버에 있는 코드를 단일 진실 소스로 삼아 자신의 코드를 비교할 수 있습니다. 이 서버는 일반적으로 **GitHub**에서 제공합니다.

Back to Blog

관련 글

더 보기 »

Git을 사용한 브랜치 개발

git을 사용한 Branch 개발을 위한 커버 이미지 https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-up...