VCS (Version Control System) 소스 코드의 수정 내용과 변경 이력을 관리하는 버전 관리 프로그램 이다.
VCS를 사용하면
Git으로 관리하고자 하는 프로젝트 폴더로 이동 후
다음 명령어를 입력한다.
git init

프로젝트 폴더 내에 보이지 않는 .git 디렉토리를 생성한다. 이 디렉토리에는 저장소 관리에 필요한 뼈대 파일이 들어 있다.
Git은 현재 저장소에 대한 모든 변경사항을 추적하고 있지만, 아직 프로젝트의 파일을 관리하고 있지 않는 상태다.
Untracked
modified, staged, unmodified에 속하지 않은 working directory 안에 모든 파일
ex) 새로 생성된 파일
Modified
파일의 수정이 감지 되었지만, 아직 staged나, commited 되지 않은 상태
Staged
수정한 파일을, 곧 commit할 것이라고 표시한 상태
Unmodified (Commited)
로컬 저장소에 저장되어 수정사항과 이력이 관리되는 상태
git status

Git에서 감지한 파일들의 변경 상태를 볼 수 있다.
(bye.txt 생성, test.txt 수정, hi. txt 삭제)
git add <file name> ...
변경된 파일 중 commit 하고자 하는 파일을 staging area로 이동 시키기 위한 명령어

git restore --staged <file name>
staging area에 포함된 파일들을 다시 staging area에서 배제 시키기 위한 명령어

git add .
현재 디렉토리의 변경 사항 모두를 staging 할 수 있다.

commit은 특정 시간의 소스코드 이력을 스냅샷의 형태로 해당 repository의 commit log를 남긴다.
앞서git add 명령어를 사용하여 commit하고자 하는 파일을 staging area에 추가 해주었다면,
아래 명령어를 사용하여 staging area에 있는 파일들을 commit 할 수 있다.
git commit -m "Commit message"
지금 남기는 commit에 대한 설명을 위해 큰 따옴표안에 commit message를 작성할 수 있다.
commit message는 commit을 함으로써 repository의 변경 사항을 간명하게 설명하는 요약문이어야 한다.

예시에서는 편의를 위해 많은 파일을 변경하고, 한 번에 commit 했는데 가급적, 수정 사항 하나 하나에 대해 각각 git add하고 개별적인 commit으로 남기도록 하자.
지금까지 프로젝트 폴더의 커밋 이력을 보기 위해
다음 명령어를 입력하면 된다.
git log

git log 명령어를 통해 보이는
log는 각 commit에 대한 (작성자, hash 값, 날짜와 시간, 커밋 메세지 등) 자세한 정보를 담고 있다.
앞서 살펴본 Git은 개인이 local에 프로젝트를 관리하기 위해 사용하는 tool이다.
github는 원격 저장소 호스팅 서비스로



git remote add origin <github repo 주소>

github repository 주소를 origin이라는 이름으로 등록 한다는 의미다. 매번 원격 저장소의 주소를 입력하기 번거로우니 저장소 주소 대신 origin이라는 별칭을 사용하기 위함 이다.
origin대신 다른 이름을 사용해도 무방하나,
일반적으로 origin을 많이 사용한다.
github의 여러 repository를 각각 다른 별칭으로 저장할 수도 있다.
git remote -v
다음 명령어로
등록된 github repo 주소와 그 주소의 별칭을 확인할 수 있다

git push master origin
local에 master branch에 있는 파일과 commit들을 origin으로 등록된 github repository에 올리는 명령어


정상적으로 github repository에 올라간 것을 확인할 수 있다.
git pull master
push와 반대로 github 저장소에 올려진 파일과 수정이력을 local에 받아오는 명령어
