저장소 만들기
로컬 현재 디렉토리를 git 저장소로 만들기
git init
원격 저장소를 로컬로 복제(clone)하기
원격 저장소를 원격 저장소의 이름으로 복제한다.
git clone https://github.com/libgit2/libgit2
원격 저장소를 mylibgit
새로운 이름으로 복제한다.
git clone https://github.com/libgit2/libgit2 mylibgit
참고 사항
- 원격 저장소의 이름은 기본값이
origin
이다. - 권한이 없는 원격 저장소를 clone할 수 있고 오픈소스를 fork한 원격 저장소를 clone할 수도 있다.
여러 가지 예시
새 파일 저장소에 저장하기 (Untracked -> Staged -> Committed)
*.c
와 LICENSE
새로운 파일을 만들어서 저장소에 저장하는 것은 2단계로 나눌 수 있다.
1단계 (Untracked -> Staged)
$ git add *.c
$ git add LICENSE
2단계 (Staged -> Committed)
$ git commit -m 'initial project version'
파일을 수정하고 저장소에 저장하기 (Unmodified -> Modified -> Staged -> Committed)
처음 저장소를 Clone하면 모든 파일은 Tracked이면서 Unmodified 상태이다.
1단계: 파일 수정 (Unmodified -> Modified)
에디터로 hello.c 파일을 편집한다.
2단계: 파일 추가 (Modified -> Staged)
$ git add hello.c
3단계: 파일 커밋 (Staged -> Committed)
$ git commit -m 'greeting message changed'
git add
명령어는 Untracked 파일을 Staged 파일로 만들 때도 쓰고 Modified 파일을 Staged 파일로 만들 때도 사용한다.
git add
의 의미는 프로젝트에 파일을 추가한다기보다 다음에 커밋할 파일의 목록에 추가하는 것으로 이해한다.
작업 디렉토리의 파일의 상태 확인
$ git status
파일 무시하기
.gitignore
파일을 만들어 버전 관리하지 않고 무시할 파일 목록을 만든다.
파일 비교
Modified 파일을 Committed 파일과 비교하여 보여준다.
$ git diff
Staged 파일을 Committed 파일과 비교하여 보여준다.
$ git diff --staged
변경사항 커밋하기
커밋 메시지를 에디터로 입력 후 커밋한다.
$ git commit
커밋 메시지를 옵션으로 지정하고 커밋한다.
$ git commit -m "Story 182: Fix benchmarks for speed"
Staging Area 생략 후 바로 커밋할 수도 있다.
$ git commit -am "added new benchmarks"
파일을 삭제하기
$ git rm 파일 이름
파일 이름 바꾸기
되돌리기
마지막 커밋 내용을 되돌리기
이미 커밋을 했지만 파일을 깜빡하고 추가하지 않은 파일이 있거나 커밋 메시지를 수정하고 싶을 때 git commit --amend
명령어를 이용한다.
$ git commit -m 'initial commit'
$ git add forgotten_file
$ git commit --amend
Staged -> Unstaged
git reset HEAD [파일 이름]
명령어로 특정 파일을 Staged 상태에서 Unstaged 상태로 변경한다.
$ git reset HEAD CONTRIBUTION.md
Modified -> Unmodified
git checkout -- [파일 이름]
명령으로 애초에 저장소에 저장된 버전을 다시 꺼내온다.
$ git checkout -- CONTRIBUTION.md
원래 파일로 덮어쓰기 때문에 수정한 내용은 전부 사라지는 것에 주의한다.