[스터디] Pro git 2장 – Git의 기초

Posted by in Environment, Tech

이 글은 사내 스터디에서 pro git을 진행하며 정리한 글입니다.

git 저장소 만들기

git 저장소는 git init 명령어를 사용해 생성한다

기존 저장소를 clone하기

리모트 저장소(github)를 클론해서 가져올 수 있다.
클론은 svn의 svn checkout 저장소경로와 비슷하다.

파일의 생존주기

18333fig0201-tn
파일은 크게 untracked, unmodified, modified, staged 영역을 거친다.
untracked : 파일이 있으나 한번도 add 되지 않음.
unmodified : 파일을 add 하여 commit을 1회 이상 한 이후, 수정사항 없음
modified : 바로 위 케이스에서 수정사항 있음
staged : git add한 상태

파일의 상태 확인하기

위 명령어를 -s를 사용해 축약형으로 확인할 수 있다.
M : 수정된 파일
A: 추가된 파일
AM: 추가 및 수정 파일
MM: Stage단계에서 수정상태인 파일
??: Untracked 파일

파일 무시하기

.gitignore 파일에 무시할 파일을 추가하면 된다.

git diff

git diff 명령어는 수정했지만 아직 add 하지 않은 파일의 diff를 보여준다.

+ 안녕 +

+

git diff 명령어는 워킹 디렉토리에 있는 것과 Staging Area에 있는 것을 비교한다.
만약 커밋하려고 이미 staging Area에 넣은 걸 보고싶다면 git diff –cached를 사용하자
–cached는 이미 커밋한 것과 staging Area에 있는걸 비교한다

+ 안녕 +

+

git commit

커밋은 의미있는 한 단계의 작업을 나타낸다
매 커밋당 log와 체크섬이 남아 나중에 되돌아갈 수 있게 한다.
커밋을 어느 시점에 할 지는 개발자 마음이다.

매번 커밋을 해줄 때마다 add를 통해 staging area에 넣어야 한다.
tracked 상태인 파일이 자동으로 추가되기를 원한다면 \-a를 추가하자

파일 삭제하기

git rm 명령어를 쓸 수 있다.

git rm 명령어는 파일 삭제와 git rm을 순차적으로 진행한다.
만약 파일 삭제를 하고싶지 않다면 –cached 옵션을 붙인다

rm 이후에는 커밋을 해주어야 한다.

파일명 변경하기

git mv 명령어를 쓸 수 있다.

커밋 히스토리 조회

– git log

커밋로그가 많으면 많을 수록 보기 힘드니 아래 명령어를 사용하자
git log –oneline(한줄로) –decorate(이쁘게) –all(모든브랜치를) –graph(그래프형태로) 보여주세요
git log –oneline –decorate –all –graph
git alias 해두면 편하다.

– 조회 제한 조건도 있다. http://git-scm.com/book/ko/v2/Git의-기초-커밋-히스토리-조회하기

되돌리기

git commit –amend를 사용할 수 있다

리모트 저장소

– git remote 명령으로 현재 저장소의 리모트 저장소를 조회한다

– v옵션을 주면 자세히 볼 수 있다.

리모트 저장소 추가

git remote add (단축이름) (저장소경로)로 추가할 수 있다.

리모트 저장소의 데이터 가져오기

기본적으로 master를 가져오나 모든 정보를 가져오고 싶은 경우, git fetch를 활용할 수 있다

리모트 저장소에 커밋 올리기

git push

올려야 하는 브랜치나 tag가 많다면 –mirror를 쓸 수 있다

리모트 저장소 이름 변경 및 삭제

git tag

태그는 원론적으로는 브랜치와 동일해보이나, 브랜치는 지웠다 살렸다 하는게 여러번이라면, 태그는 특정한 커밋을 가리키는 포인터 역할로 많이 사용한다.
git tag를 기점으로 checkout을 받을 수 있다.

가벼운 tag

log 메시지를 남기고 싶지 않다면 가벼운 tag를 사용할 수 있다

특정 커밋을 가리키는 tag

브랜치도 마찬가지지만 tag도 특정 커밋을 찍어서 뿌릴 수 있다.
아래 로그가 있다고 쳤을 때,

공유하기

push하면 된다

git alias

일종의 단축키이다

이렇게 해두면 git co로 체크아웃을 할 수 있다 (!)
더 복잡하게도 만들 수 있다