1. Git, GitLab, GitHub?
- Git
- 분산 버전관리 시스템(Distributrted Version Control Systems - DVCS) 라 불리며, Computer File의 변경사항을 추적하고 여러 명의 User’s 간에 File에 대한 작업을 조율하는 데 사용되어짐
- 여러명의 Developer가 하나의 S/W Project를 참여할 때, SourceCode를 관리하는데 주로 이용된다고 생각하면됨
1-1. Git Version 관리는 왜 하나?
- 게임이라고 가정한다면, 게임에서도 출시 후 첫 배포 버전이 1이라고 한다면, 완벽하게 출시가 될 수 없고 그 외에 버그, 에러사항들로 인하여 게임에 영향이 발생하였음! 그래서 User가 문의사항에 또는 버그사항에 문의를 남겨 놓게 되면 현재 버전 1에서 바로 수정을 하지 않고, 공지사항에 업데이트를 언제 하겠다고 공지를 함! 그게 메인에서 바로 업데이트를 해주는 것이 아닌, 따로 문제사항들을 수정하여 업데이트 날 현재 버전 1에서 1.1 버전으로 문제들을 수정작업한 것을 최종적으로 반영하여 정상적으로 게임 할 수 있도록 하는 것을 말함!
- 근데, 문제 발생할때마다 현재 버전1에 작업해야해서 서비스를 중단하고 완료하면 다시 서비스를 제공하게된다면 과연 게임이 원활하게 이루어지고 고객 만족도가 높아질까? 말그대로 현 버전은 놔두고 따로 수정작업 해야하는 부분을 수정하고 완료되면 현재 버전에 버전을 업데이트 하여 고객이 불편해 하지 않도록 하기 위한 관리를 돕는 시스템이라고 생각하면 됨
1-2. Git 장점
- 인터넷이 연결되지 않는 곳에서도 개발을 할 수 있으며, 중앙 저장소가 삭제되어도 원상복구가 가능함
- 각 Developer가 Branch에서 개발을 한 뒤에 메인 Project에 Merge하는 방식을 통해 병렬개발이 가능함
1-3. Git vs SVN(Subversion - 서브버전)
- SVN
- 중앙 Server Upload(직관적임)
- 동시 Upload시 충돌 가능성이 많음
- 모든 작업에 NetWork가 사용되어 느림
- Git
- Local Store Save 후 Server Upload
- Branch와 Merge를 통해 충돌 가능성 낮음
- 작업은 Local에서, Upload만 NetWork 사용함
- History 관리 기능이 잘되어, 관리가 용이함
1-4. Git Basic Language
- Repository[저장소]
- 저장소는 History, Tag, Source의 Tree 구조 or Branch에 따라 Version을 저장한다는 개념임
- 작업자가 변경한 모든 History를 확인 가능함
- Working Tree
- 저장소를 어느 한 시점을 바라보는 작업자의 현재 시점을 말함
- Staging Area
- 저장소에 Commit하기 전에 Commit을 준비하는 위치라고 생각하면됨
- Commit
- 현재 변경된 작업 상태를 점검을 마치면 확정하고 저장소에 저장하는 작업을 말함
- Head
- 현재 작업중인 Branch를 가리키는 것을 말함
- Branch
- 분기점이라 말함
- 작업할 때 현재 상태를 복사하여 Branch에서 작업을 한 후에 완전하다 싶을 때 Merge하여 작업을 함
- Merge
- 다른 Branch의 내용을 현재 branch로 가져와 합치는 작업을 말함
- GitHub
- Git을 사용하는 Project를 지원하는 웹 Hosting Service임
- S/W의 보급 및 지원을 위해 개발자 간의 협력에 중점을 둔 플랫폼임
- Git Version 관리 시스템임
- GitLab
- Git을 기반으로 하는 Web Service 및 Version 제어 System을 갖춘 단조 사이트인 GitHub의 또 다른 대안임
- 저장소 관리 및 버전 제어, 위키 호스팅 및 버그 추적 시스템도 제공을 해줌
- Project가 현재 Hosting되기 때문에 모든 종류의 Project를 만들고 관리 할 수 있음