티스토리 뷰


Basic 알아야할것
git 의 저장소는 3가지 단계로 나누어 집니다. 커밋한 소스가 보관되는 저장소와 현재 프로젝트 파일들이 있는 작업트리,

저장소와 작업트리사이의 버퍼영역으로 커밋될 대상이 저장되는 스테이징 영역입니다.

git 는 빈 디렉토리는 추적하지 않습니다.

형상관리를 하지 않을 파일은 .gitnore 파일에 추가 합니다.

HEAD 는 현재 브랜치의 가장 최신커밋을 의미합니다.

기본원격 저장소를 origin이라고 부릅니다.

 


 Git 무결성
Git은 모든 데이터를 저장하기 전에 체크섬 ( Checksum 또는 Hash ) 을 구하고 그 체크섬으로 데이터를 관리한다.

체크섬 없이 어떠한 파일이나 Directory 도 변경할 수 없다.

체크섬은 Git에서 사용하는 가장 기본적인 (Atomic) 데이터 단위이자 Git의 기본 철학이다.

Git 없이는 체크섬을 다룰 수 없어서 파일의 상태도 알 수 없고 데이터를 잃어버릴 수도 있다.

Git은 SHA-1 Hash 를 사용하여 체크섬을 만든다. 만든 체크섬음 40자 길이의 16진수 문자열이다.

파일의 내용이나 Directory 구조를 이용하여 체크섬을 구한다.

 


 Git은 데이터를 추가할 뿐
Git으로 무얼 하든 데이터가 추가된다. 되돌리거나 데이터를 삭제할 방법이 없다.

다른 VCS 처럼 Git 도 Commit 하지 않으면 변경사항을 잃어버릴 수 있다. 하지만 Snapshort을 Commit 하고 나면 데이터를 잃어버리기 업렵다.

 


 Git  세 가지 상태
Git은 파일을 Commited, Modified, Staged 이렇게 세 가지 상태로 관리한다.

Commited 란 데이터가 로컬 데이터베이스에 안전하게 저장됐다는 것을 의미한다.

Modified란 수정한 파일을 아직 로컬 데이터베이스에 Commit 하지 않은 것을 말한다.

Staged란 현재 수정한 파일을 곧 Commit 할 것이라고 표시한 상태를 의미한다.

 


이미 있는 저장소 Clone 하기

 

git clone git://github.com/schacon/grit.gif

다른 이름으로 Clone 하기

git clone  git://github.com/schacon/grit.gif mygrit

 


수정하고 저장소에 저장하기
Tracked (관리대상임)와 Untracked(관리대상이 아님 )로 나눈다.

Tracked 파일은 이미 Snapshort에 포함되 있던 파일이다.

Tracked 파일들은 또 Unmodified(수정하지 않음) 와 Modified( 수정함) 그리고 Staged 상태중 하나이다.

나머지 파일들은 모두 Untracked 파일이다.

 


환경설정
 git config --global --list : 현재 설정정보를 조회

git config --global user.name "사용자명"

git config --global use.email "이메일 주소"

git config --global color.ui "auto" : 터미널에서 표시되는 메시지에 칼라를 표시 해줌

 


git 명령어 정리

 

.gitignore 파일무시하기

*.a #확장자가 .a 파일 무시

lib.a #확장나자가lib.a 무시하지 않는다.

git checkout –파일 :: 수정한 파일 되돌리기

git remote -v : 원격 저장소 보기

git remote add pb git://github.com/paulboone/ticgit.igt : 원격 저장소 추가하기

git fetch : 리모트 저장소에 있는 데이터를 모두 가져온다. 그리고 나면 리모트 저장소의 모든 브랜치를 로컬에서 접근할 수 있어서 언제든지 머지를 하거나 내용을 살펴볼 수 있다.

git push origin master  : 리모트 저장소에 Push 하기

git remote show origin : 리모트 저장소의 URL과 추적하는 브랜치를 출력한다 이 명령은 git pull 명령을 실행할 때 master 브랜치와 머지할 브랜치가 무엇인지 보여준다.

git remote rename pb paul : 리모트 저장소의 브랜치 이름 변경

git tag - 'v.1.4.2.*' : 태그 조회하기 . .1.4 * 인거 모두

git tag -a v.1 -m 'my version 1. 0 ' : 태그 붙이기 -a 옵션을 추가

git tag -s v1.5 -m 'my signed' : 태그에 서명하기

git config --global alias.co checkout : get 명령 알리아스 만들기

git add < file >

git add -A

git add -u

git commit

git commit -m 'log'

git commit -a

git push

git push -f

git log

git log < file >

git mv <file> <new file>

git log --follow – < new file>

git diff

git diff HEAD

git diff --staged

git log-3

git log --stat

git log -p

git log --oneline --graph --decorate -all

git branch

git branch <Name>

git branch -d <Name>

git checkout < Branch|Tag >

git checkout -b < Branch >

git tag <Tag>

git tag <Tag> <Treeish>

 


git reset --soft

git reset --mixed

git reset --hard HEAD^

git revert HEAD

 


git commit -C HEAD - a  - - amend : 지정한 커밋의 로그 메시를 다시 사용하여 기존 커밋을 수정합니다., -c를 사용하면 기존 메시지를 수정할수 있는 편집기 실행

git checkout HEAD – <file> : 실수로 지운 파일을 최신 커밋에서 복구한다.

 


Git 브랜치
개발을 하다 보면 코드를 여러 개로 복사해야 하는 일들이 자주 생긴다. 코드를 통째로 복사하고 나서 원래 코드와는 상관없이

독립적으로 개발을 진행한다.  이렇게 독립적으로 개발한느 것이 브랜치이다.

 


git branch : 현재 존재하는 브랜치를 조회합니다 -r 옵션을 사용하면 원격저장소의 브랜치를 확인 할 수 있습니다.

git branch 브랜치명B 브랜치A : 브랜치명A에서 새로운 브랜치 브랜치명B를 만듭니다. ( git에서 기본 브랜치는 master라는 이름을 사용합니다. )

git branch -m 존재하는브랜치명 새로운브랜치명 : 존재하는 브랜치를 새로운브랜치로 변경합니다. 이미 존재하는 브랜치명이 있을 경우에는 에러가 나는데 -M 옵션을 사용하면 이미 잇는 경우에도 덮어씌운다.

 


git checkout testing : test 브랜치로 이동하기

git checkout master : 마스터 브랜치로 되돌아가기

 


원격저장소
git clone 저장소주소 폴더명

git fetch : 원격저장소의 변경사항을 가져와서 원격 브랜치를 갱신합니다.

git pull : fetch 에서 하는 원격저장소의 변경사항을 가져와서 지역브랜치에 합치는 작업을 한꺼번에 합니다. 파라미터로 풀링할 원격저장소와 반영할 지역브랜치를 줄 수 있습니다.

git push : 파라미터를 주지 않으면 origin 저장소에 푸싱하면 현재 지역브랜치와 같은 이름의 브랜치에 푸싱합니다.

--dry-run 옵션을 사용하면 푸싱된 변경사항을 확인할 수 잇습니다. 로컬에서 tag를 달았을 경우에 기본적으로 푸싱하지 않기 때문에 git push origin 태그명이나

모든 태그를 올리기 위해서 git push origin --tags 를 사용해야 합니다.

git remote : 원격 저장소의 정보를 확인 할 수 있습니다.

 

 

 

브랜치와 Merge의 기초
git checkout -b iss53 : iss53 브랜치를 만들고 체크아웃까지 한다. ( -b )

git branch iss53 : iss53 브랜치 생성

git checkout iss53

git branch -d hotfix : 브랜치 삭제

 


Merge의 기초
git checkout master : master 로 이동

git merge iss53: 머지 하기

git branch -d iss53: 브랜치의 삭제

git mergetool

git commit --amend : 머지를 잘못했으면?!

 


버그 찿기
#히스토리를 이진탐색해서 버그를 찿아낸다.

git bisect start

git bisect good : ?

git bisect bad :

git bisect run < shell-command ]

git bisect reset

 


역사 다시 쓰기
git revert

git commit –amend : #마지막 커밋 다시하기

git reset <commit> : 지정한 commit 으로 돌아가기

git rebase <commit> : 지정한 commit 부터 역사 재구축

git rebase --interactive < commit > : 지정한 commit 부터 역사 재구축

git rebase --abort : 하는 중간에 망했을때

git reflog : 완료했는대 돌이켜보니 망했을때

git reset --hard < commit >

 

 

 

로그 관리
git log : 커밋로그들을 열람 -1 -2 , --pretty=oneline, --pretty=format:"%h %s" 처럼 형식 지정

git log commit :

git blame: 갈 줄 앞에 커밋명과 커밋한 사람들의 정보를 볼 수 있습니다.

git blame -L 10, 15 파일명 : 범위 지정, 숫자대신 정규식 사용가능

git blame -M 파일명 : -M 옵션을 사용하면 반복되는 패턴 찿아 복사하거나 이동된 내용을 찿아줍니다.

git revert 커밋몇

git reset 커밋명 : 이전 커밋을 수정하기 위해 사용합니다.  --soft 옵션을 사용하면 이번 커밋을 스테이징하고 커밋은 하지안흐며 --hard옵션은 저장소와 작업트리에서 커밋제거

git reset HEAD^ : 와 같이 입력하면 최근 1개의 커밋을 취소 할 수있습니다.

 

 

 

브랜치 관리
git branch : 브랜치 목록을 표시

git branch --merged : 이미 Merge 한 브랜치 목록을 확인한다.

git branch --no-merged : Merge하지 않은 브랜치를 살펴본다.

 


브랜치 Workflow
Git 서버가 있고 이서버의 저장소를 하나 Clone 하면 Git은 자동으로 origin 이라는 이름을 붙힌다.

origin 으로 부터 저장소 데이터를 모두 내려받고 나서 master 브랜치를 가르키는 포인터를  만든다.

리모트 서버로부터 저장소 정보를 동기화하려면 git fetch origin 명령을 사용한다.

 


서버에 Git 설치하기
git clone --bare my_poject my_project.gif : --bare 옵션을 주고 Clone 하면 새로운 Bare 저장소가 만들어진다. Bare 저장소는 디렉토리는 관례에 따라 .gif 확장자로 끝난다.

git init --bare --shared :  --shared 옵션을 추가하면 Git은 자동으로 그룹 쓰기 권한을 추가한다.

 


파일 무시
.gitignore

 

 

 

 

 

 

 

댓글
댓글쓰기 폼