Git?? Github??
Git은 분산형 버전 관리 시스템(VCS)이다. 가장 유명한 Git 저장소는 Github이며, 나도 Github을 이용하고 있으므로 정리는 Github을 기반으로 할 예정이다. 또한 많은 개발 관련 공식사이트 등에서 Github Oauth를 지원하는 등 개발자들은 개발자 생활동안 Git과 뗄레야 뗄 수가 없을 것이다.
Github(버전관리)을 사용하는 이유
Git은 소스들의 버전관리를 위해 만들어졌다.
아마도 많은 사람들이 버전관리를 하기 위해 아래와 같은 경험을 한 적이 있을 것이다.
또 한 파일을 여러 사람이 수정을 하고 그 이력들을 저장하기 위해선 버전관리가 필수적이다. 그리고 Github을 통해 이제는 단순 버전관리 뿐만이 아니라 전 세계를 통틀어 '가장 큰 오픈소스 공유 공간'이자 많은 개발자들의 포트폴리오들이 집대성 되어있는 '개발자들의 커뮤니티'라고 칭할 수 있다.
Git의 장점
- 오프라인 작업이 가능하다. git은 저장소를 로컬에 복제하여 사용하므로, 서버에서 새 자료를 받아올 수 없는 부분을 제외하면 오프라인 상태에서도 대부분의 형상관리 기능을 이용할 수 있다. (로컬 서버로 작용)
- 브랜치 등을 통해 한 파일로 여러 명이 동시에 작업하는 병렬 개발이 가능하다.
- 속도가 빠르다. 각각의 개발자들의 모두 분산처리 서버의 주인이 되는 셈으로, 서버가 직접 해야할 일이 줄어든다.
이러한 이유로 협업에 필수적이다!
Git 용어
- Remote Repository(원격 저장소): 파일이 원격 저장소 전용 서버에서 관리되며 여러 사람이 함께 공유하기 위한 저장소
- Local Repository(로컬 저장소): 내 PC에 파일이 저장되는 개인 전용 저장소
- Working Tree: 저장소를 어느 한 시점을 바라보는 작업자의 현재 시점
- Staging Area: 저장소에 커밋하기 전에 커밋을 준비하는 위치(중간 저장)
- Commit: 현재 변경된 작업 상태를 점검을 마치면 확정하고 저장소에 저장하는 작업
- Head: 현재 작업 중인 Branch를 가리킨다.
- Branch: 가지 또는 분기점을 의미하며, 작업을 할 때에 현재 상태를 복사하여 Branch에서 작업을 한 후에 완전하다 싶을 때 Merge하여 작업한다.
- Merge: 다른 Branch의 내용을 현재 Branch로 가져와 합치는 작업
Git 주요 명령어
- git init: 깃 저장소를 초기화(생성)한다. 디렉토리 안에서 명령을 실행하면 현재 디렉터리 안에 .git디렉터리가 생기고 git 명령어를 수행할 수 있게 된다.
- git help: 자주 사용하는 명령어를 알려준다. git help 명령어를 입력하면 해당 명령어에 대한 세부설명이 나온다.
- git clone: 원격 저장소의 내용을 내 local로 복사하는 명령어이다.
- git status: 저장소의 상태를 확인하고, 어떤 파일이 저장소에 있는 지, 커밋이 필요한 파일 등을 알려준다.
- git add: 해당 파일들을 staging (중간 저장) 상태로 변경시키며, 커밋 할 수 있는 단계로 보낸다. 'git add 파일명' 으로 수행 가능하며, 'git add .'로 변경 가능한 모든 파일을 staging 시킬 수 있다.
- git push: 커밋한 내용을 해당 원격저장소에 적용한다.
- git pull: 저장소의 변경된 내용을 로컬에 저장한다. 주로 수정 중인 파일이 변경되었는 지 점검하기 위해 쓰인다.
- git log: 커밋 내역을 확인할 때 사용하는 명령어
- git branch 브랜치명: 입력한 브랜치명으로 새로운 branch를 생성한다. * branch 관련 명령어는 따로 포스팅 할 예정이다.
Reference