티스토리 뷰

WEB개발이야기

git사용법과 명령어

즐길나이인데 2018.07.10 23:38

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의 브랜치를 현재 브랜치와 합칩니다.

댓글