Git은 개발자들의 필수 소양입니다. 코드의 버전 관리와 협업을 위한 tool인 Git에 대해 함께 알아봅시다. Git을 모르는 입문자의 경우, 잦은 실수와 다양한 에러를 경험할 수 있습니다. 하지만 Git의 작동 원리와 필수 커맨드를 학습한다면 그러한 경험을 줄일 수 있습니다. 자유자재로 Git을 다룰 수 있도록 열심히 배워봅시다!

🐈 Git의 정의

Git코드 버전 관리를 할 수 있는 프로그램을 말합니다. 그런데 버전 관리가 뭘까요? 쉽게 이해할 수 있도록 예시를 들어보겠습니다.

학교에서 과제를 할 때, 수정사항이 생기면 '.최종', '.최종.최종' 등으로 파일 이름을 변경해 본 경험이 있지 않나요? 혹시나 이전 완성본이 필요할까봐 새로운 이름으로 파일을 저장했었죠.

그런데 이런 식으로 파일을 계속해서 복사하다보면 파일의 어떤 내용이 수정되었는지 알 수 없고 중간에 변경된 사항을 확인하고 싶어도 어떤 파일을 봐야하는지 잘 모르는 문제가 발생합니다. 이렇게 되면 결국에는 모든 파일을 열어봐야 하는 번거로움이 생기죠.

이런 일을 방지하기 위해 필요한 것이 바로 버전 관리입니다. 버전 관리란, 시간에 따라 파일의 변화를 기록하여 필요한 순간에 특정 시점의 버전을 다시 꺼내올 수 있도록 하는 시스템을 말합니다. 그리고 이러한 버전 관리를 돕는 것이 바로 Git입니다.

버전 관리의 장점에는 크게 두 가지가 있는데요. 첫째, 최종본을 만들기까지 어떤 과정을 거쳤는지 지난 과정들을 확인할 수 있습니다. 둘째, 과정 도중 오류가 생기면 이전 버전으로 돌아갈 수 있습니다.

예를 들어, 여러 버전의 파일이 있다고 가정해봅시다. 세 번째 파일을 만들던 중, 오류가 생겼습니다. 만약 버전 관리가 잘 되었다면 그 전 단계로 돌아가는 것이 어렵지 않습니다. 파일을 여러 개로 분리하고 분리 기준을 설정해 두었다면 돌아가야 하는 지점을 정확히 알 수 있는 것이죠. 하지만 파일을 분리하지 않고 매번 똑같은 파일을 수정했다면 잘못되기 이전의 상태로 돌아가기 매우 어렵습니다.

이 같은 경우는 개발할 때도 마찬가지입니다. 하루 아침에 완벽한 코드를 작성할 수는 없습니다. 이 말은 즉, 완성된 코드를 작성하기 위해 시간이 필요하다는 것인데요. 일단 코드를 작성하고 여러 번의 수정을 거쳐야 비로소 완성된 코드가 만들어집니다.

'.최종', '.최종.최종' 등으로 파일을 구분 짓는 것은 비효율적입니다. 이와 달리 git은 보다 효율적인 방법으로 버전 관리를 해줍니다. 각 버전마다 확실하게 구별되도록 하는데요. 매번 작성했던 코드의 모습을 하나의 버전으로 저장하면서 말이죠.

또한, git은 여러 개발자들이 협업할 수 있도록 돕는 기능을 가지고 있습니다. 개발할 때는 보통 프로그램을 기능별로 나누고 각 기능마다 여러 개발자들이 나누어 개발을 진행합니다. git을 이용하면 이렇게 나누어 작성된 코드를 하나로 모을 수 있습니다.

정리하자면 git은 버전 관리와 협업을 가능하게 도와주는 도구입니다. 이 두 가지 기능은 개발에서 중요한 부분을 차지하고 있기 때문에 개발자라면 꼭 갖춰야 할 소양에 git이 자주 언급되곤 합니다. 기술 면접에서도 git을 사용할 수 있는지 묻는 기업이 많다고 하네요. 따라서, git을 익히는 것은 취업을 위해서라도 필수적이라고 할 수 있습니다.

🐈 Git의 역사

Git은 리누스 토발즈(Linus Torvalds)라는 사람에 의해 만들어졌습니다. 이 이름이 익숙하신가요? 네, 맞습니다. 리누스 토발즈는 Linux 운영체제의 어원이 된 인물이자 Linux를 개발한 사람입니다.

리누스 토발즈는 리눅스를 만든 이후에 BitKeeper라고 하는 tool을 사용하여 리눅스의 여러 버전을 관리하고 있었습니다. ver1, ver2, ver3... 이런 식으로 말이죠.

그러던 어느 날, 리눅스 커뮤니티의 개발자 한 명이 BitKeeper의 내부 동작 원리를 분석하려는 시도를 했습니다. 이 일을 계기로 리눅스 커뮤니티와 BitKeeper를 개발한 기업 간의 사이가 틀어지게 되었습니다. 이후, 해당 기업은 리눅스 커뮤니티에 BitKeeper의 이용료를 청구함에 따라 리누스 토발즈는 BitKeeper를 대신할 다른 프로그램을 찾고자 했습니다.

그러나 대체 프로그램을 찾는 것이 쉽지 않았습니다. 그 결과, 리누스 토발즈는 스스로 버전 관리 툴을 만들고자 계획합니다. 그렇게 만들어진 것이 바로 Git입니다. 문제를 해결하기 위해 스스로 프로그램을 개발하는 그의 사례를 보면 리누스 토발즈는 정말 타고난 개발자인 것 같네요!

당시 git의 설계 및 제작 목표는 다음과 같습니다.

  1. 빠른 속도
  2. 단순한 디자인
  3. 비선형적 개발 지원: 수천 개의 branch를 병행할 수 있음
  4. 완전 분산형 시스템
  5. 거대한 프로젝트도 속도 저하 문제 없이 관리할 수 있는 시스템

이러한 목표들은 버전 관리와 협업에 최적화되어 있었습니다. 따라서, 오늘날 사용성이 가장 좋은 프로그램으로 인정받을 수 있게 된 것이죠.

그럼 git이라는 이름의 어원은 어디서 파생된 것일까요? 이는 리누스 토발즈가 git을 맨 처음 만들었을 당시에 남겼던 기록을 보면 알 수 있습니다.

위 내용에 담긴 내용을 요약하면 대략 이렇습니다.

git은 당신의 마음대로, 어떤 방식으로든 해석될 수 있습니다.
1. Unix에서 사용되는 명령어 이름을 제외한 임의의 알파벳 3개의 조합
2. 멍청하고 단순한(혹은 이런 특성을 지닌 아무 단어로도 해석이 가능한)
3. Global Information Tracker의 약자
4. Goddamn Idiotic Truckload of Shit의 약자😂😂😂

이처럼 git은 이름부터 다양한 의미로 해석 가능하도록 탄생되었습니다. 마치 git이 지닌 여러 버전으로 나누어지는 기능처럼 말이죠.

🐈 GitHub의 정의

사실 Git에는 한 가지 기능이 더 있는데요. 바로 다른 컴퓨터에 작업물을 보내는 기능입니다. 이 기능이 좋은 이유는 뭘까요?

작업물을 다른 컴퓨터에 보낸다는 것은 작업물의 백업본을 만든다는 것입니다. 중요한 자료를 미리 복사해 두는 것처럼 백업본을 만들면 문제가 생겼을 때 다시 그 백업본을 가져와서 복구가 가능합니다. 이 백업본을 다른 컴퓨터에 저장하면 자신의 컴퓨터에 문제가 발생했을 때 대처가 가능하겠죠?

그렇다면 다른 컴퓨터를 가지기 위해 컴퓨터를 여러 대 소유해야 할까요? 가능하긴 하지만 대부분은 그렇게 여유가 많지 않습니다. 만약 이런 컴퓨터를 무료로 제공하고 사용할 수 있도록 해주는 서비스가 있다면 참 좋겠죠? 그러한 서비스 중 가장 대표적인 것이 바로 GitHub입니다.

GitHub을 사용하면 컴퓨터를 따로 마련하지 않아도 작업물을 자신의 컴퓨터가 아닌 다른 곳에 저장할 수 있습니다. 개발자라면 GitHub을 모르는 사람이 없을 정도로 정말 유명한 서비스입니다.

그런데 Git과 GitHub를 헷갈리는 사람이 참 많습니다. 그래서 다시 한 번 정리하자면 Git버전 관리를 하는 프로그램이고 Git으로 관리하는 프로젝트를 올려두는 사이트가 바로 GitHub입니다. 그리고 GitHub의 역할은 사용자의 컴퓨터가 아닌 또 다른 컴퓨터를 대신 만들어주는 것입니다. 조금 어려운 표현으로는 원격 저장소를 대신 제공해주는 서비스라고 할 수 있죠.

다른 컴퓨터에 작업물을 보내는 기능의 또 다른 장점협업에 유용하다는 것입니다. 다른 컴퓨터에 작업물을 올려 놓으면 제 3자가 그 작업물을 다운로드 받은 후 내용을 수정해서 다시 다른 컴퓨터에 올릴 수 있습니다. 그리고 다시 한 번 우리가 그 수정본을 가지고 수정을 한 뒤 다른 컴퓨터에 올릴 수도 있겠죠. 이러한 과정으로 협업이 이루어집니다.

🐈 Git 설치하기(for Windows)

자, 이제 본격적으로 git을 다뤄보기 위해 직접 git을 설치해봅시다. 작성자의 컴퓨터는 Windows 운영체제를 사용하므로 이 챕터는 Windows 사용자를 기준으로 작성하겠습니다.

우선, git 사이트에서 화면 아래쪽 'Download... for Windows'를 클릭합니다.

이후, 설치 파일이 뜨면 계속해서 next를 눌러줍니다. 그 다음에 아래와 같은 단계에서 반드시 Git Bash Here에 체크 표시가 된 상태로 next를 눌러야 합니다. 중요하니 꼭 확인해주세요.

이 설정을 반드시 해야 하는 이유는 CLI 환경에서 Windows를 사용할 때 알아야 하는 커맨드가 따로 존재하기 때문인데요. 그런데 이전 시리즈인 '유닉스 커맨드 라인'에서 우리는 유닉스 커맨드만을 학습했습니다. 그러니 Windows를 위한 커맨드를 사용하기는 어렵죠.

하지만 안심하세요! 우리 같은 사람들을 위해 Git은 Windows에서도 유닉스 커맨드를 사용할 수 있도록 해주는 프로그램을 별도로 준비했답니다. 그 프로그램 이름이 바로 Git Bash입니다. 이 프로그램을 사용하면 Windows에서도 유닉스 커맨드로 원하는 작업을 할 수 있게 됩니다.

이 다음부터는 install 버튼이 나올 때까지 계속해서 next를 눌러주기만 하면 됩니다. 설치가 마무리되면 'Launch Git Bash'에 체크하고 'View Release Notes'는 체크를 해제해 주세요.

드디어 Git Bash가 실행되었습니다!

Windows 환경에서 유닉스 커맨드를 사용할 수 있는지 확인하기 위해 간단한 커맨드를 입력해 보겠습니다.

잘 동작하네요! :)

여기서 꿀팁 하나를 드리겠습니다. 매번 Git Bash를 실행하고 작업하는 폴더로 이동하는 번거로움을 해소하기 위해 작업하는 폴더 안에서 오른쪽 마우스를 누르고 'Git Bash Here'를 클릭해주세요.

그럼 이제 해당 위치에서 바로 Git Bash로 작업이 가능합니다.

🐈 Sublime Text 설치하기(for Windows)

Sublime Text코드를 작성할 수 있는 Text Editor 중 하나입니다.

Text Editor의 또 다른 예로는 대부분의 컴퓨터에 기본으로 설치되어 있는 메모장이 있습니다. 따라서, 메모장이 있다면 이 프로그램을 꼭 설치하지 않아도 됩니다. (개인적으로는 코드를 작성할 때, 메모장보다는 Sublime Text에 작성하는 것이 가독성 측면에서 좋았습니다😊😊😊)

또는 프로그래밍을 위해 이미 Pycharm과 Visual Studio 같은 IDE를 설치했다면 그 IDE를 사용해도 무방합니다.

그럼에도 Sublime Text를 사용하길 원한다면 아래 글을 참고해주세요!

우선, Sublime Text 사이트에 들어가서 'Download for Windows'를 클릭해주세요.

설치 파일이 다운로드되면 실행해줍니다. 그런 다음 install 버튼이 나올 때까지 next를 눌러주시고 설치해주세요. 그럼 이제 Sublime Text를 사용할 수 있습니다.


이제 git을 사용하기 위한 모든 준비를 마쳤습니다. 다음 시간부터 본격적으로 git을 사용해보도록 하죠! 개발자의 기본 소양인 버전 관리 툴 git! 얼른 익숙해져서 개발의 세계에 한 걸음 더 다가가 봅시다! 🥰🥰🥰

* 이 자료는 CODEIT의 'Git으로 배우는 버전 관리'를 기반으로 작성되었습니다.
profile
There's Only One Thing To Do: Learn All We Can

2개의 댓글

잘 읽었습니다^^ 정리가 깔끔하게 잘되어있네요!

1개의 답글