개발자라면(혹은 개발자를 희망하는 사람이라면) 필수적으로 사용하는 협업툴이 바로 git이다.
처음 Git을 사용했을 때 파일이 단순히 어떤 장소에 올리고 받는 모습을 보면서 '클라우드'인가?? 라고 생각했었었다.
어떠한 개념과 원리로 동작하는지도 몰랐었던 git을 이제는 프로젝트 경험과 자율학습으로 불편하지 않을 정도로 잘 사용하고 있다.
하지만, 사용하지 않으면 망각하기 때문에 정리할 필요가 있다고 생각했다.
💡 Git 이란??
git은 코드 버전 관리 프로그램이다.
여기서 말하는 버전 관리란 "파일의 변화를 시간에 따라 기록했다가 나중에 특정 시점의 버전을 가져올 수 있는 시스템"을 말한다.
git을 처음 듣는 사람에게 왜 git을 사용하는지 쉽게 설명하기 위해서 파일 이름을 예시로 든다.
발표 자료.ppt
발표 자료(수정).ppt
발표 목차수정.ppt
발표 자료(최종).ppt
발표 자료_찐_막.ppt
...
보통 우리가 하나의 파일을 수정할 때 위와 같이 파일이름을 수정하는 경우가 많다.
자기 나름대로의 규칙이 있다면 좀 더 효율적인 이름으로 파일을 관리할 수 있지만 대부분 그렇지 못하여 애로사항을 느낀 경험들이 있을 것이다.
git은 버전 관리를 통해서 위의 문제점을 해결해준다.
※ git은 이외에도 알면알수록 엄청난, 다양한 기능들을 제공해준다.
따라서, git을 사용하여 버전 관리를 하게 되면 파일의 지난 과정 확인이 가능함과 동시에 시간의 기록에 따라 이전 버전으로 돌아갈 수 있기 때문에 효율적으로 파일의 변화를 관리할 수 있다.
또한, 나혼자만이 아닌 여러 사람들과 협업을 할 수 이도록 해주기 때문에
git은 버전관리와 동시협업을 가능하도록 지원해주는 편리한 툴이다.
💡 Git 역사
git은 리눅스(Linux)라고 하는 운영 체제를 만든 리누스 토발즈(Linus Torvalds)가 만들었다.
리눅스를 만든 이후에 BitKeeper라고 하는 툴로 리눅스의 각 버전들(ver1, ver2, ver3 ...)을 관리하고 있었는데 리눅스 커뮤니티의 개발자 한 명이 BitKeeper의 내부 동작 원리를 분석하려고 했던 일을 계기로 리눅스 커뮤니티와 BitKeeper 측의 사이가 틀어지게 되었다.
이 때문에 리눅스 커뮤니티 측에 대해서 BitKeeper는 유료화되었고, 리누스 토발즈는 BitKeeper를 대신할 다른 버전 관리 시스템을 찾아보기 시작했는데 자신의 마음에 드는 버전 관리 툴을 찾지 못했자 본인이 직접 버전 관리 프로그램을 만들게 된다. 😮
git은 빠른 속도, 단순한 디자인, 비선형적인 개발(수천 개의 동시 다발적인 브랜치), 완벽한 분산, Linux 커널 같은 대형 프로젝트에도 유용(속도나 데이터 크기 면에서)이라는 목표를 갖고 설계 및 제작되었다.
또한, 앞서 언급했듯이 git은 버전 관리와 협업에 필요한 여러 요소들이 고려되었기 때문에, 사용성이 굉장히 좋은 프로그램이 될 수 있었다.
그렇다면 git은 무슨 뜻일까?
리누스 토발즈가 git을 처음 만들었을 때 커밋한 기록을 보면 알 수 있는데 내용은 다음과 같다.
"git"은 당신의 마음에 따라 그 어떤 것으로도 해석될 수 있다.
- 유닉스 커맨드에서 사용되는 명령어 이름을 제외한 랜덤한 알파벳 3글자의 조합
- 멍청하고 단순한(아무 단어로 해석되어도 좋다는 뜻)
- "global information tracker"의 약자
- "goddamn idiotic truckload of sh*t"이라는 욕설의 약자
git이 이토록 다양한 의미로 해서될 수 있는지 몰랐었다.
리누스 토발즈하면 강연에서 가운데 손가락을 올리면서 "F**k you NVIDA" 를 외치는 장면이 떠오르는데... 그만큼 평범하지 않은, 독특한 그의 성격을 담고 있는 README인 것 같다.
💡 Git vs GitHub, GitLab
git은 버전관리를 해주는 프로그램임을 알았다.
근데, 우리는 git을 사용할 때 github, gitlab과 같은 웹 서비스를 통해 사용하고 있다.
그렇다면 github, gitlab은 무엇일까?
git은 버전관리, 동시협업을 가능하게 해주지만 자신의 작업물을 다른 컴퓨터에도 보낼 수 있도록 지원해준다.
즉, 백업본을 만들 수 있도록 해준다는 뜻인데 외부컴퓨터에서 백업본에 접근하여 같이 협업하기 위해서는 원격 저장소(서버)가 필요하다. 이 부분을 github, gitlab이 지원해준다.
정리하면 github, gitlab은 git으로 관리하는 프로젝트를 올려둘 수 있는 사이트로서 각각의 개발자들이 진행한 개발의 변경 사항을 온라인에서 확인 가능한도록 지원해주는 서비스이다.
github, gitlab 두 개의 서비스를 모두 경험했을 때 아직까지는 사용자 인터페이스 차이만 느꼈을 정도로 깊게 다뤄보지 못했었는데 프로젝트 용도(목적)나 범위, 그리고 속도 등에서 확연한 장단점을 가지고 있었다. 사용 목적에 알맞게 프로젝트를 관리해야겠다.
추가적으로 git에 관해서 단계별로 자세하게 알려주는 사이트가 있었다. → 누구나 쉽게 이해할 수 있는 Git입문
단순한 git 명령어 뿐만 아니라 부족한 개념을 채워나기 좋은 사이트인 것 같다.
[참고] 코드잇 강의내용
'Git' 카테고리의 다른 글
[Git] 프로젝트간 git 사용 (feat. branch) (0) | 2021.01.05 |
---|---|
[Git] Git Repository 옮기기 (0) | 2021.01.04 |
댓글