컴퓨터 파일의 변경사항을 추적하고 여러명의 사용자들 간에 해당 파일들의 작업을 조율하기 위한 스냅샷 스티림 기반의 분산 버전 관리 시스템
이다.
깃은 2005년에 리누스 토르발스에 의해 개발되었고 주로 여러명의 개발자가 하나의 소프트웨어 개발 프로젝트에 참여할 때, 소스 코드를 관리해기에 개발자에게 필수불가결한 시스템이 되었다.
앞서 말했다시피 소스코드를 주고 받을 필요없이 여러 명이서 동시에 작업하는 병렬개발
이 가능하다.
브랜치를 통해 개발후, merge를 통해 개발을 진행할 수 있다.
인터넷이 연결되지 않은 곳에서도 개발이 가능하며, 분산 버전관리이기에 중앙 저장소가 삭제 되어도 원상복구가 가능하다.
소스코드를 효과적으로 관리해주는 독보적인 무료, 공개소프트웨어이다.
SVN vs Git
GIT | SVN |
---|---|
분산형관리 시스템 | 중앙관리 시스템 |
여러 개발 PC와 저장소에 분산해 저장 | 중앙서버에 저장 |
사본을 로컬에서 관리하기에 속도가빠름 | 속도가 느림 |
로컬저장소에 저장후 업로드 | 중앙서버 업로드(직관적) |
Branch와 Merge를 통해 충돌가능성 낮음 | 동시 업로드시 충돌가능성 높음 |
히스토리 관리 기능이 잘 제공되어, 히스토리 관리가 용이 | x |
git은 본인의 코드와 그 수정내역을 기록하고 관리할도록 돕는 버전관리 프로그램이며, 로컨 저장소를 사용하기 떄문에 다른 개발자와 실시간으로 작업을 공유할 수 없다.
github는 git 저장소를 관리하는 클라우드 기반 호스팅 서비스로 다른 사람과 소스코드 공유가 가능하며, git의 기본적인 기능을 확장하여 제공하고 클라우드 서버에 소스코드를 올려 여러사람과의 공동작업이 가능하다.
쉽게 말해
Git은 버전관리 프로그램
Github는 버전관리, 소스코드공유, 분산 버전 제어 등등이 가능한 원격 저장소
'git help [궁금한 명령어]'
를 타이핑시, 해당 깃 명령어의 설정과 사용에 대한 도움말 출력.git add : 'staging 영역'에 변경내용 추가. 다음 commit명령 전까지 변경분을 staging 영역에 보관하여 변동내역을 저장.
cf) git commit -m [커밋 메시지] : staging area에 있는 내용은 "커밋 메시지"를 반영한 수정본 파일의 묶음임.
git pull : 서버 저장소로부터 최신 버전을 "pull" (서버 저장소의 데이터를 가져와, 현재 브랜치와 merge)
cf) 작업 도중 기존 작업 내용은 유지하면서, 최신 코드로 업테이트 할 때 사용.
git clone : 서버 저장소의 데이터를 로컬 컴퓨터로 복사. (서버 저장소의 데이터를 그대로 가져옴. 작업중이던 내역 있을시 덮어쓰기 됨)
cf) 프로젝트에 처음 투입 될 때 사용
git checkout : 작업하기 원하는 브랜치로 이동.
cf1) git checkout Yana : Yana 브렌치로 이동.
cf2) git checkout -b 야나 : '야나' 라는 브랜지를 생성 후 야나 브렌치로 이동(생성과 이동 동시에)