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(기록)을 보여준다.