저장소 만드는 방법
-
로컬 디렉토리를 Git 저장소에 적용하는 방법
git init
-
Git 저장소를 clone하는 방법
git clone
- 프로젝트 히스토리를 전부 받아온다.
- 최신 버전의 checkout 된다.
- 자동으로 해당 저장소가 origin 저장소가 된다.
→ 기본 파일 (뼈대 파일, Skeleton, .git
디렉토리)가 생성된다.
수정하고 저장소에 저장하기
- working directory (우리가 작업하는 git local directory)
git 파일 상태
-
tracked (관리 대상)
git이 알고 있는, 관리하는 파일
- modified
- unmodified
- 마지막 커밋 이후로 아무것도 수정하지 않은 상태
- staged
- 커밋으로 저장소에 기록할 대상
- modified된 파일 중 커밋으로 기록할 파일은 stage 시킨다.
-
untracked (관리 대상 ❌)
한 번도 커밋된 적 없는 파일
상태 확인하기
git status
$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
new file: README
modified: CONTRIBUTING.md
git status -s
git status —short
$ git status -s
M README
MM Rakefile
A lib/git.rb
M lib/simplegit.rb
?? LICENSE.txt
- M : Modified
- A : Add된 파일, (Staged)
- ?? : Untracked
git add
커밋할 파일을 add하여 staged 상태로 만든다.
- untracked 파일 → tracked + staged
- tracked 파일 → staged
Staged 파일 → Unstaged
git reset HEAD 파일명
이전 commit 상태로 되돌리기
git checkout — 파일명
파일 A (hello) → commit → 파일 A 수정 (hello world)
파일 A를 commit된 상태(hello)로 되돌릴 때
pull과 fetch
- pull
- 리모트 저장소의 데이터를 모두 로컬로 가져온다.
- 자동으로 merge한다.
- fetch
- 리모트 저장소의 데이터를 모두 로컬로 가져온다.
- 자동으로 merge하지 않는다.
remote에서의 변경 정보는 받아왔지만, local branch에서의 HEAD가 그 변경에 따라가지 않아서 변경이 보이지 않음
태그
- 릴리즈할 때 버전 관리에 사용된다.
- 태그는 커밋 단위로 적용된다.
- 브랜치 단위 X
- 하나의 tag는 하나의 commit만 가르킬 수 있다.
- 여러 개의 커밋을 하나의 tag로 묶는 줄 알았는데 아니당
- 태그는 별도로 push해야 반영된다.
- 태그를 붙인 후 push하면 태그 정보가 반영되지 않는다.
git push origin tag이름
git push origin --tags
태그의 종류
- Lightweight
- Annotated
- 태그를 만든 사람, 이메일, 날짜, 메시지를 저장