Git 이란?
- 코드 버전 관리 프로그램 / 버전 관리와 동시 협업을 가능하게 해주는 툴
- 버전관리: 파일의 변화를 시간에 따라서 기록했다가 나중에 특정 시점의 버전을 다시 꺼내올 수 있는 시스템
- 장점:
지난 과정 확인 가능
이전 버전으로 돌아갈 수 있음
- 리누스 토발즈(Linus Torvalds)라는 사람이 빡쳐서 만듦
- GitHub: Git으로 관리하는 프로젝트를 올려둘 수 있는 사이트 / 원격 저장소를 대신 제공해 주는 서비스
- Git Bash: Git에서 준비한 Windows에서도 유닉스 커맨드를 사용할 수 있도록 해주는 프로그램
Git 써보기
repository와 commit
- 저장소 (repository): 프로젝트 디렉토리의 초창기 모습부터 최근 모습까지 버전별로 담겨있음
- .git 디렉토리(숨겨져 있음): 레포지토리 / 프로젝트의 변경 사항들이 저장 돼 있음
- 커밋 (commit): 프로젝트 디렉토리의 특정 모습을 하나의 버전으로 남기는 행위와 결과물
커밋이 저장되는 곳 : 레포지토리
repository 만들기
git init
: 현재 디렉토리를 Git이 관리하는 프로젝트 디렉토리(=working directory)로 설정하고 그 안에 레포지토리(.git 디렉토리) 생성
첫 commit 해보기
- git에게 commit한 사람 알려주기
git config user.name "haeun"
git config user.email "han.kim0904@gmail.com"
커밋에 이름과 이메일 주소도 함께 저장됨
- 커밋 메시지 남기기
m
옵션: 커밋에 대한 정보 (커밋메세지)
- 커밋할 파일을 git add로 지정해주기
git add
: 수정사항이 있는 특정 파일을 staging area에 올리기
해당 디렉토리 내에서 수정사항이 있는 모든 파일들을 staging area에 올리기
untracked 상태: Git으로 뭔가를 해준 적이 없어서 파일이 버전 관리 대상이 아닐 때
add
: commit 사전 작업으로 commit 할 파일 미리 지정해주는 것
어떤 파일의 수정된 모습을 commit에 반영할 거라는 뜻
git add calculator.py
git add License
- commit하기
git commit -m "Create calculator.py and License"
root-commit
: 이 커밋이 프로젝트의 첫 번째 커밋이라는 뜻
Git의 3가지 작업 영역
- working directory (working tree): 작업을 하는 프로젝트 디렉토리
ex) MathTool 디렉토리
- staging area (index):
git add
를 한 파일들이 존재하는 영역
커밋 시 staging area에 있는 파일들만 커밋에 반영 됨
따라서 staging area에 올렸는지 여부에 따라 커밋에 반영되는지가 달라짐
원하는 것들만 선별적으로 커밋에 반영할 수 있게 해줌
- repository: working directory의 변경 이력들이 저장되어 있는 영역
즉, 커밋들이 저장되는 영역
git add 더 자세히 알아보기
git status
: 깃이 인식하고 있는 프로젝트 디렉토리의 현재 상태를 보여줌
git add .
: 현재 디렉토리 내에서 변경 사항이 있는 모든 파일을 한번에 staging area에 추가하는 방법
Git이 보는 파일의 4가지 상태
- Git에서 파일들은 크게 4가지 상태를 가짐
- Untracked 상태: 파일을 새로 생성하고 그 파일을 한 번도 git add 해주지 않은 상태
- Tracked 상태: 파일이 Git에 의해 그 변동사항이 추적되고 있는 상태
- Staged 상태
새로 생성한 파일에 내용을 쓰고 git add를 해줌
커밋에 포함됐었던 파일 중 내용을 수정하고 git add를 해줌
- Unmodified 상태
현재 파일의 내용이 최신 커밋의 모습과 비교했을 때 전혀 바뀐 게 없는 상태
커밋을 하고 난 직후에는 working directory 안의 모든 파일들이 이 상태
- Modified 상태
최신 커밋의 모습과 비교했을 때 조금이라도 바뀐 내용이 있는 상태
git add 취소하기
git reset
: staging area에서 파일 제거
git reset calculator.py
특정 git 커맨드의 사용법을 알고 싶다면?