2023.11.14 - [프로그래밍의 역사] - Git 이전에는 어떻게 코드를 관리했을까? - 시대를 평정한 Git의 등장
Git 이전에는 어떻게 코드를 관리했을까? - 시대를 평정한 Git의 등장
Git은 프로그래머라면 빼놓지 않고 써야할 필수 요소 입니다. 팀원과 사용을 하던 혼자 사용을 하던 프로그램의 형상 관리를 위해서는 반드시 사용 할 수 밖에 없는 입니다. Git은 2005년에 리누스
code-mark.tistory.com
이전 포스팅에서 Git 이전에 형상 관리를 했었던 방법에 대해 간단히 알아봤습니다. 이번 포스팅에서는 SW 개발자의 필수품 Git에 대해서 알아보겠습니다.
많은 분들이 아시겠지만 git 관련 매우 유명한 밈입니다. 원래는 초보개발자들이 commit만 하고 push를 하지 않는 경우들이(어??) 종종 있어서 push를 강조하던 주제가 목숨걸고 push를 하는 밈으로 변질 되었습니다.
이전 포스팅에서 Git이 등장한 배경에 대해서 설명을 했지만 제일 중요한 Git에 대해서는 설명을 하지 않았으니 혹시 Git에 대해서 알아 보려고 포스팅을 보고 계신다면 좋은 정보 얻어 가셨으면 합니다!
목차
- Git은 뭐가 다른건데? 분산 버전 관리!
- Git은 어떻게 사용하죠?
- CLI를 알게 되면 좋습니다!
- SW 개발자라면 Git은 꼭 알고 있는게 좋아요!
Git은 뭐가 다른건데? 분산 버전 관리!
GIt과 이전 형상관리 툴들과 다른 점은 '분산 버전 관리'입니다. push meme이 나온 것 처럼 Git이 분산 버전을 가지고 있다는 점은 꼭 기억해야 됩니다.
물론 Git의 가장 강력한 장점을 뽑자면 오픈소스 였다는 것이겠지만 아키텍쳐적으로 보면 원격 저장소(Remote Repository)와 지역 저장소(Local Repository)가 나뉘어 각자의 버전을 따로 관리한다는 것입니다. Git은 분산 저장소를 구조를 가져가면서 형상관리의 유연함을 부여했습니다. 중앙 관리보다 분산 저장소를 사용 했을 때 유리한 점은 다음과 같습니다.
- 분산 저장소: 각 개발자는 전체 프로젝트의 복사본을 가지고 있으며, 로컬 저장소에서 작업합니다.
- 분산된 작업: 각 개발자는 중앙 서버와 독립적으로 작업할 수 있으며, 네트워크에 연결되어 있지 않아도 작업할 수 있습니다.
- 유연성과 안전성: 각 개발자는 자체적으로 작업하고 변경을 커밋할 수 있으며, 중앙 서버의 장애에도 로컬 저장소에서 작업을 계속할 수 있습니다.
- 효율적인 브랜치 관리: 브랜치를 생성하고 합병하는 것이 중앙 관리 시스템에 비해 유연하고 효율적입니다.
간단히 설명하면 이렇습니다. 중앙 관리 구조를 가져 간다면 로컬에서는 따로 버전 관리를 하지 않기 때문에 중앙에서 문제(통신 장애, 코드 충돌)가 생기면 모든 작업자에게 영향을 주고 문제를 해결 해야 될때까지 작업이 지연 될 가능성이 큽니다.
반면에 분산 관리를 하게 되면 각자 통신 장애의 경우 각자의 로컬에서 저장을 하고 있다가 복구가 되면 중앙에 반영을 하면 됩니다. 또한 충돌 발생시 해결 또한 로컬에서 해결을 진행하고 문제가 없는 버전을 원격 저장소에 업로드를 하면 됩니다.
# 물론 Git이 충돌을 완전히 방지하지는 않습니다. 해결 또한 Git에 대해 익숙치 않은 상황이라면 해결이 힘들 수 있기 때문에 숙련될 때 까지 공부와 연습을 하는 것이 중요합니다.
이렇게 분산 된 저장소를 가지고 있기 때문에 commit을 하면 로컬에 버전이 관리가 되고 원격 저장소에 버전 관리를 하기 위해서는 push라는 과정이 있어야 되기 때문에 처음에 보여드렸던 밈이 생성되기 시작 한 것이죠.
Git은 어떻게 사용하죠?
Git의 사용방법은 크게 두가지로 볼 수 있습니다. 첫번째는 CLI(Command-Line Interface)를 사용하여 명령어를 입력하여 사용을 하는 것이고 두번째는 Github
Desktop, SourceTree, GitKraken 등의 GUI 프로그램을 사용하는 것 입니다.
Git은 강력한 툴임 동시에 배우기 어려운 툴이기도 합니다. 숙련된 개발자도 Git의 기능들을 다 알고 활용하는 것이 힘든 경우도 있습니다. 물론, Git의 기능을 100% 사용하지 않더라도 충분히 강력하기 때문에 모든 기능을 다 쓸 필요가 없는 경우도 있겠죠. GUI 프로그램들은 Git의 모든 기능을 제공하지는 않지만 주로 사용하는 기능을 제공 합니다. 덕분에 초보 개발자들이 쉽게 접근하여 Git을 사용 할 수가 있죠.
다만, 모든 기능을 GUI로 제공하는 것은 아니기 때문에 CLI를 이용한 Git 사용이 필요 할 수 있습니다. 그래도 GUI 프로그램을 사용한다고 하여 CLI로 접근 할 수 없는 것은 아니니 편의성을 위해서라도 GUI를 사용하는 것이 좋겠죠.
CLI를 알게 되면 좋습니다!
CLI 환경이 어렵고 힘들어서 GUI에서 제공하는 기능만으로 충분하다고 느낄 수도 있는데요. 그럼에도 불과하고 CLI를 익혀야 될 필요가 있을 경우도 있습니다. GUI를 사용하지 못하는 경우나 자동화 배포를 사용하는 경우와 같이 명령어를 입력해야 되는 경우가 있을 수 있기 때문에 CLI에 익숙해 질 필요성도 있습니다.
CLI의 기초적인 명령어는 다음과 같습니다.
- git init: 새로운 Git 저장소를 초기화합니다.
- git clone: 원격 저장소를 복제합니다.
- git add: 변경된 파일을 스테이징 영역에 추가합니다.
- git commit: 스테이징 영역에 추가된 파일들에 대한 커밋을 생성합니다.
- git push: 로컬에서 작업한 내용을 원격 저장소로 업로드합니다.
- git pull: 원격 저장소에서 변경된 내용을 로컬로 가져옵니다.
- git branch: 브랜치를 생성하거나 현재 브랜치를 확인합니다.
- git merge: 브랜치를 병합합니다.
- git log: 커밋 히스토리를 확인합니다.
SW 개발자라면 Git은 꼭 알고 있는게 좋아요!
Git은 소규모 팀 부터 대규모 조직까지 협업을 위한 매우 기초적이고 중요한 수단입니다. Git에 관심을 갖고 사용법부터 운영 방법론까지 배워야 될 내용이 많으니 많은 관심을 갖으면 좋을 것 같습니다. 추후에 시간이 된다면 Git 사용에 대한 심화 내용을 포스팅 하도록 하겠습니다.
잘못 된 내용이나 미흡한 부분이 있다면 언제든지 댓글로 알려주시면 감사드립니다!
'프로그래밍 > General Development Skills' 카테고리의 다른 글
cron expression 스케쥴 프로그래밍 (0) | 2024.03.22 |
---|---|
오~~ Auth~~ OAuth - 너네 API 쩔더라. (0) | 2024.03.22 |
git을 막 사용하기 시작한 당신을 위한 몰라도 좋은 git의 기본 원리 (0) | 2024.02.26 |
Git 이전에는 어떻게 코드를 관리했을까? - 시대를 평정한 Git의 등장 (2) | 2023.11.14 |