git & github
-
git은 분산 버전관리 시스템(DVCS)도구이고 github는 git을 제공하는 서비스이다.
- DVCS란?
Distributed Version Control Systems
중앙서버에 있는 코드를 개발자 각자의 로컬 컴퓨터에 복사한 후 복사된 프로젝트를 가지고 작업하며 서버에 업로드할 수 있다.
-
git은 원격 저장소와 로컬 저장소가 분산되어 있기 때문에 분산 버전 관리 시스템이라고 하며 안전하면서도 여러명이서 효율적으로 개발할 수 있다.
-
git을 사용하여 여태까지 개발해온 이력을 확인할 수 있고, 예전에 작업했던 상태로 다시 되돌릴수도 있다.
로컬 저장소(local repository)
- 로컬 저장소와 원격 저장소로 나뉘며 git init 명령어로 해당 작업공간의 저장소를 생성하면 작업공간 하위에 .git이라는 이름의 폴더가 생긴다. 그 폴더가 로컬 git저장소 이며 안에 모든 커밋들이 들어있다.
basic git commands
git clone
- 깃허브의 url을 통해 복사해오는 방법이 주로 쓰인다.
git clone url 폴더이름
git init
- 프로젝트를 git repository로 만드기 위해서 사용하는 명령어로 local reporitory 생성되어 .git 이라는 디렉토리가 생긴다)
- 프로젝트란 개발하고자 하는 소스코드들이있는 디렉토리인데 git init을 해서 git repository로 만들어야 git 으로 버전 관리가 시작된다.
git add
git add * #*은 수정된 모든 사항을 의미한다.
- modified 파일(수정사항)들을 staged상태로 옮기고자 할 때 사용하는 명령어이다.
- git repository에 새로 추가된 파일들을 staged 상태로 옮길 때도 사용된다.
- 새로 추가된 파일들은 untracked 파일이라고 하는데 git에서는 이들도 수정사항이라고 본다.
- add 를 해야 commit 할 수 있다
- staging을 위한 명령어로 이 명령어를 이용해 파일을 index에 등록한다.
- staged 상태란?
로컬 저장소로 commit 할 준비가 된 상태
git commit
git commit -m "커밋메세지"
git commit #으로 들어가서 직접 수정
git commit -a #-a는 변경된 저장소 파일을 모두 커밋하는 옵션이다.
- staged된 파일들을 commit하고자 할 때 사용하는 명령어이다.
commit
- 어떤 순간 작업 공간의 상태를 저장한 것으로 작업 공간 안에 있는 모든 파일과 데이터를 복사해서 저장소에 보존한다.
- commit한다는 의미는 현재 작업공간의 상태를 commit으로 만들어서 저장소에 저장한다는 것을 의미한다.
git diff
- 어떤 수정사항들이 적용됬는지 보고자 할 때 사용하는 명령어이며 staged된 수정사항들은 git diff로 볼 수 없으며 modified된 파일들만 git diff로 볼 수 있다.
git status
- 현재 상태를 보여주는 명령어로 어떠한 파일들이 modified되었고 어떤 파일들이 staged되었는지 등의 전체적인 상황을 보여준다.
git log
- commit 내역들을 보여주며 commit history라고 한다.
- git log를 통해 이제까지 commit 내역들을 전부 볼 수 있다. 다만 출력되는 포맷이 보기 쉽지 않아서 tig같은 툴을 사용하면 훨씬 편리하다.
- git status 와 git log의 차이
status는 파일이 git의 추적 대상인지 보여주며 tracked상태라면 unmodified, modified, staged상태를 확인할 수 있고, logs는 해당 branch의 commit 내역을 보여준다.
git rm
- 원하는 파일을 git repository에서 삭제한다.
git mv
- 원하는 파일을 git repository상에서 이동 시키며, 주로 rename 할 때 사용된다.
branch & merging
- 깃을 사용 할 때는 branch 기반으로 개발하며 commit 내역을 트리 형태로 관리한다.
- 수정하고 싶을 시 기존 소스에 영형 받지 않게 하기 위해 마스터가 아닌 branch를 생성해 작업하며 생성하는 branch를 feature branch라고 한다.
git branch
git branch '브랜치이름' #명령을 실행하면 '브랜치이름'의 branch를 생성할 수 있다.
git checkout
git checkout '브랜치이름' #명령을 통해 해당 브랜치로 이동할 수 있다.
git checkout -b '브랜치이름' #branch를 생성하며 바로 checkout 할 수 있다.
git에서 사용할 수 있는 명령어