git
은 개발자에게는 없어서는 안될 버전관리시스템
입니다.
SVN
이 중앙집중식 버전관리 시스템이라면 git은 분산 버전관리 시스템이라 할 수 있습니다.
경우에 따라 다르겠지만 예전에는 SVN을 많이 사용하던것을 현재는 분산 버전관리 시스템이 git
으로 많이 넘어온 상태입니다.
로컬컴퓨터에서만 사용할 경우에는 git만 설치하여 사용하면 되지만 원격저장소를 통해서 여러사람과 사용하기 위해서는 git서버
가 있어야 합니다.
git서버
로 대표적인 사이트는 우리가 흔히 알고 있는 github
가 있고 gitlab
, Bitbucket
등이 있습니다.
물론 네트워크내의 컴퓨터 한대를 이용하여 서버를 구축하여 사용할 수도 있습니다.
서비스명 | 설명 | URL |
---|---|---|
GITHUB | 무료로 사용 가능하나 소스가 공개됨 | https://www.github.com |
GITLAB | 무료로 무제한 사용가능 | https://about.gitlab.com |
Bitbucket | 저렴한 가격에 사용가능 | https://bitbucket.org |
Bonobo Git Server | 설치형 git서비스 (Win) | https://bonobogitserver.com |
gogs | 설치형 git서비스 (Linux/Win/Mac) | https://gogs.io |
gitea | 설치형 git서비스 (Linux/Win/Mac) | https://gitea.io/en-US/ |
git은 분산 버전관리 시스템 이기 때문에 로컬 저장소에 있는 git과 서버에 올린 원격 저장소에 있는 git의 내용과 구성이 동일합니다.
그래서 혹시나 git서버가 망가지거나 소스를 분실해도 로컬 저장소에 있는 git파일을 push(업로드)하면 동일하게 복구가 가능하게 됩니다.
또한 분산관리시스템을 기본적으로 로컬 저장소에서 관리를 하기 때문에 처리속도가 빠르다는 장점도 가지고 있습니다.
git 명령어
git에서 사용하는 명령어를 간단히 정리해 보도록 하겠습니다.
기본 명령어
git --version
현재 git의 버전을 확인 할 수 있습니다.
git init
git 저장소를 생성합니다.
git status
커밋되지 않은 변경사항을 조회합니다.
git add 파일명
git add는 로컬디렉토리에서 작업한 파일을 스테이징 영역에 올려 놓습니다. 다시말하면 git에서 관리하는 파일이라는 선언을 한다고 보면 됩니다.
git commit -m "커밋메시지"
git add
를 통해서 스테이징에 올라가인 파일들을 커밋 합니다.
SVN에서의 commit
는 변경된 파일을 서버에 올리는 것을 말하지만 git에서의 commit
는 변경된 파일(스테이징된 파일)을 로컬 저장소에만 반영을 하는 것을 말합니다.
다시말하면 원격서버에는 올라가 있지 않다는 것입니다. 원격서버에 올릴려면 여기에 다시 git push
명령어를 실행해 줘야 합니다.
git diff
작업트리와 스테이징영역에 대한 차이점을 보여줍니다.
--cached
옵션을 추가하면 스테이징 영역과 저장소의 차이점을 보여줍니다.
git diff HEAD
를 입력하면 작업트리, 스테이징 영역, 저장소 의 차이점을 모두 보여 줍니다.
git mv 파일명
새파일명
기존에 존재하던 파일을 새파일로 변경을 하며 변경이력은 그대로 유지합니다.
git checkout -- 파일명
아직 커밋 전인 파일에 대해 변경내용을 취소하고 이전 커밋으로 되돌립니다.
SVN의 revert
와 같은 역활을 합니다.
branch 관련 명령어
git branch
로컬 저장소의 브랜치 리스트를 볼 수 있습니다.
-r 옵션을 사용하면 원격 저장소의 브랜치를 볼 수 있습니다.
git branch 브랜치1
브랜치1
라는 새로운 브랜치를 만듭니다.(체크아웃은 하지 않습니다.)
git branch 브랜치2
브랜치1
브랜치1
에서 브랜치2
를 새로 만듭니다.
git branch -d 브랜치1
브랜치1
를 삭제합니다.
tag 관련 명령어
git tag
로컬 저장소의 태그 리스트를 볼 수 있습니다.
-r 옵션을 사용하면 원격 저장소의 태그 리스트를 볼 수 있습니다.
git tag 태그명
브랜치1
브랜치1
의 현재상태에서 태그명으로 태그를 붙힙니다.
보통 태그는 버전명으로 많이 사용합니다.
원격저장소 관련 명령어
git clone 원격저장소 주소
원격저장소 주소에 있는 내용을 복제하여 현재 폴더에 저장합니다.
git pull
원격저장소의 변경사항을 가져와서 로컬저장소에 있는 내용과 합집니다.
git push
로컬저장소에 있는 내용을 원격저장소에 업로드 합니다.
git remote add 이름
저장소주소
새로운 원격 저장소를 추가합니다.
git remote
추가한 원격저장소 리스트를 보여 줍니다.
git remote rm 이름
해당 이름의 원격저장소를 제거합니다.
기타 명령어
git checkout 브랜치명
/태그명
작업트리를 변경합니다.
git checkout -b 브랜치2
브랜치1
브랜치1
에서 브랜치2
라는 새로운 브랜치를 만들고 작업트리를 변경합니다.
git rebase 브랜치1
브랜치1
의 변경사항을 현재 브랜치에 적용합니다.
git merge 브랜치1
브랜치1
의 브랜치를 현재 브랜치와 합칩니다.