Git repository는 파일이나 폴더를 저장해두는 장소이다. 두 가지 종류가 있다.
평소에는 자신의 PC의 Local repository 에서 작업하다 자신의 소스 코드를 공개하고 싶을 때, Remote repository에 공개한다. (Push)
그리고 remote repository에서 다른 사람의 소스코드를 자신의 Local repository로 갖고올 수 있다. (Pull)
Local repository를 만드는 방법은 두가지가 있다.
1. 새로운 저장소를 만드는 방법 (git init)
2. 이미 만들어져 있는 remote repository를 local repository로 복사하는 방법 (git clone)
mkdir hello-world # hello-world 디렉토리 생성
cd hello-world # hello-world 디렉토리로 이동
git init #hello-world 디렉토리에 .git 디렉토리 생성
#이제부터 hello-world 디렉토리는 git이 관리하는 Local repository가 된 것.
git clone url 폴더이름
내 PC에서 작업하고 저장소에 올린다고 했는데, 이런 작업하는 폴더를 git에서는 Work tree
라고 표현한다. 그리고 저장소에 업로드하기 전에 index
라고 불리는 공간에 등록해줘야 한다. 이를 staging
이라고 표현한다. 그리고 staging
한 파일을 저장소에 업로드 하는걸 commit
이라고 표현한다.
work tree --- staging
--- index --- commit
---> repository
만약 10개의 파일을 수정했지만 5개만 저장소에 업로드하고 싶다면, 5개만 선택하는 작업이 staging
이다.
staging
명령어는 다음과 같다.
git add 파일이름
이 명령어를 이용해서 파일을 index에 등록하게 된다.
1-1의 hello-world 디렉토리에 sample.txt 라는 파일을 만들어보자.
그리고 hello-world 디렉토리의 상태를 확인해보는 명령어를 실행해보자.
git status
이를 통해서 hello-world 폴더의 상태를 확인하면
$ git status
# On branch master
#
# Initial commit
#
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# sample.txt
nothing added to commit but untracked files present (use "git add" to track)
여기서 Untracked files(추적대상이 되지않는 파일)에 sample.txt가 존재한다. git add
를 통해서 index에 파일을 등록(staging
)하면 추적 대상으로 등록할 수 있다.
git add sample.txt
파라미터에 . 을 지정하면 모든 파일을 index에 등록할 수 있다.
혹은 add -A 옵션으로 모든 파일을 등록할 수 있다.
git add .
git add -A
git은 버젼 컨트롤 시스템(VCS)이다. 그러므로, 파일이나 폴더의 추가/변경 사항을 저장소에 기록하는 것이 중요하다.
이를 commit
이라 한다.
commit
은 아래 그림처럼 시간순으로 저장된다.
commit
을 통해서 과거의 변경 이력 및 내용을 알 수 있다.
git commit -m "Comment"
# comment부분은 commit할 때 쪽지처럼 남겨줄 수 있다.
2-1에서 sample.txt를 staging
했다. 이제 그것을 commit
해보자.
git commit -m "first commit"
그리고 상태를 확인해보자.
git status
On branch master
nothing to commit (working directory clean)
모든 변경사항이 commit
되었다.
commit
을 완료했다. 저장소의 변경이력을 확인해보자
git log
# 결과
commit ac56e474afbbe1eab9ebce5b3ab48ac4c73ad60e
Author: junkyuu<devzunky@gmail.com>
Date: Sat Oct 5 17:45:21 2020 +0900
first commit
# 결과는 참조 블로그에서 퍼왔다.
git status
와 git log
의 차이점?git status
파일들의 사애를 확인한다.
우선 파일의 Untracked / Tracked 상태를 확인한다. 이는 git의 추적대상인지 확인하는 작업이다.
그리고 Tracked 상태라면
Unmodified
, modified
, staged
상태를 확인할 수 있다.
git log
해당 branch에서 commit
내역을 보여준다.
명령어 그대로 log(기록)을 보여준다.