Git
2005년에 리누스 토르발스에 의해 개발된 분산 버전 관리 시스템(Distributed Version Control Systems - DCVS)
- 컴퓨터 파일의 변경 사항을 추적하고 여러명의 사용자들 간에 파일에 대한 작업을 조율하는데 사용 된다.
- 주로 여러명의 개발자가 하나의 소프트웨어 개발 프로젝트에 참여할 때, 소스 코드를 관리하는데 주로 사용한다.
Git의 장점
- 인터넷 연결이 되지 않은 곳에서도 개발을 진행할 수 있으며, 분산 버전 관리이기 때문에 중앙 저장소가 삭제되어도 원상 복구가 가능
- 각각의 개발자가 Branch에서 개발한 뒤, 본 프로그램에 합치는 merge 방식을 통한 병렬 개발 가능
Git의 기본 용어
용어 | 기능 |
---|
Repository | 저장소, 작업자가 변경한 모든 히스토리를 확인 가능 |
Working Tree | 저장소를 어느 한 시점을 바라보는 작업자의 현재 시점 |
Staging Area | 저장소를 커밋하기 전에 커밋을 준비하는 위치 |
Commit | 변경된 작업 상태를 저장소에 저장하는 작업 |
Merge | 다른 Branch의 내용을 현재 Branch로 가져와 병합하는 작업 |
Head | 현재 작업중인 Branch |
Git의 기본 명령어
명령어 | 기능 |
---|
git help | 도움말, 'git help 명령어'로 입력시, 해당 명령어에 대한 도움말을 출력 |
git init | git 저장소를 초기화 |
git status | 저장소 상태 체크, 저장소 안에 있는 파일, 커밋이 필요한 변경 사항, 현재 작업하고 있는 브랜치 등 상태 정보 출력 |
git branch | 새로운 브랜치 생성 |
git add | staging 영역에 변경 내용 추가 |
git commit | staging 영역에 있는 변경 내용 묶음 및 정의 |
git log | commit 내역 확인 |
git push | 로컬 컴퓨터에서 서버로 변경 사항 보냄 |
git pull | 서버 저장소로부터 최신 버전을 끌고옴 |
git clone | 서버 저장소의 데이터를 로컬 컴퓨터로 복사 |
git checkout | 원하는 브랜치로 이동 |
git merge | 개별 branch에서 마친 작업을 master branch로 병합 |
Git과 코드 저장소
2008년에 시작한 최초의 git 저장소 호스팅 플랫폼
- Git, SVN, Mercurial(HG), TFS를 지원한다.
- CI/CD(Github Actions)
- Vue.js, Dokcer, Tensorflow, React 등 많은 라이브러리가 Github에서 배포하고, 유지 보수를 하고 있다.
Gitlab사에서 개발한 2014년에 시작한 git 저장소 및 CI/CD, 이슈 추적, 보안성 테스트 등의 기능을 갖춘 웹 기반의 데브옵스 플랫폼
- Git을 지원한다.
- 개발 외 DevOps 환경 구축에 용이하다.(이슈 추적, 테스트, CI/CD 파이프 라인)
- 3rd party 플러그인/툴 없이 자체 CI/CD를 사용한다.
- Kubernetes 기반 배포 및 모니터링
Atlassian이 개발/제공한 git 버전 관리 시스템을 사용하는 소스 코드 및 개발 프로젝트를 대상으로 하는 웹 기반 버전 관리 저장소 호스팅 서비스
- Jira와의 연동성이 좋다.
- Jenkins, CircleCI 같은 CI/CD 도구를 제공한다.
- 코드 리뷰, 테스트, 분석 도구를 활용한 Pull Request 단계에서의 Code insights가 가능하다.
- 계정의 비공계 컨텐츠 clone, push 작업시 2단계 인증 절차를 거친다.
Github, GitLab, Bitbucket?
Github
- 가장 많은 Integration을 지원한다.
- 가장 많은 오픈 소스 저장소 보유하고 있다.
- 가장 안정적인 서버 상태를 제공, Github Status에서 실시간 확인 가능하다.
- 한 프로젝트에는 1GB, 파일은 100개라는 용량 제한이 있다.
GitLab
- 가격면에서 합리적이다.
- Private Repo 무료, 인원 제한이 없다.
- Disk space per Repo가 10GB다.(LFS 용량 포함)
- 설치형이 무료며, 대부분의 필요한 기능을 제공한다.
Bitbucket
- Jira, Hipchat과의 연동이 편하다.
- Private Repo를 무료 제공한다.
- 한 레포지토리당 1GB라는 용량 제한이 있다.
각각의 장단점에 맞춰 본인의 상황에 맞는 것을 사용하면 된다.