git이란 프로그램 버전관리와 여러 개발자와 협업을 가능하게 해주는 프로그램이다.
깃을 이용하여 프로젝트 디렉토리의 버전관리관리하기 시작하면 그 프로그램 개발 과정을 기록할 수 있는데 그 파일을 repositoty라고 한다. repository안에는 프로그램의 초창기 모습부터 최신 수정 된 모습까지 담겨있다.
프로젝트 디렉토리의 특정 모습을 하나의 버전으로 남기는 행위 혹은 결과물을 커밋이라고 한다.
mkdir MathTool #프로젝트를 저장할 MathTool폴더를 생성
git init #빈 repository생성-> 프로젝트 디렉토리의 각 버전이 담기는 장소
commit을 하려면 우선 git에게 commit한 사람을 알려줘여한다.
위 코드를 입력하면 아래 같은 결과가 출력된다. 유저의 이름과 이메일을 입력하고 커밋할 파일의 정보를 저장하는 커멘드를 입력하면 "nothing added to commit but untracked files present (use "git add" to track)"라는 경고문구가 출력 됨
untracked: 깃에 의해 버전관리가 추적 되진 않는다는 의미
nothing add: 커밋할 파일이 지정이 안되어 있다는 의미,수정된 파일의 모습이 커밋에 포함 될것이라 지정해 줘야한다.
커밋할 파일 지정 커멘드
깃은 내부적의로 크게 3가지 종류의 작업 영업을 두고 동작한다.
1. working directory: 현재 작업하는 프로젝트 디렉토리를 의미한다. 지금 상황에서는 MathTool디렉토리가 working directory이다.
2. staging area: git add한 파일 들이 존재하는 영역. 커밋을 하게 되면 stagingarea에 있는 파일들만 커밋에 반영 됨
3. repository: working directory의 변경 이력들이 저장되어 있는 영역. 즉 커밋들이 저장되는 영역이다.
추가적인 작업
1. working derectory에서 A.txt에 Python~ 이라는 내용을추가, B.txt의 파일 내용 뒤에 Morning! 단어를 추가
2. git add B.txt를 실행하여 B.txt만 staging area에 올림
3. git commit -m "Ver_2"을 실행하여 두 번째 커밋
실행 결과 repository에는 A.txt는 수정 이전의 결과, B.txt는 수정 된 결과가 커밋에 반영 되었다.
A.txt,B.txt파일 둘다 수정했지만 staging area에 올린 파일만 커밋에 반영 된다
Mathtool derectory에 있는 calculator.py, license.txt파일을 둘다 수정한 뒤 calculator.py 파일만 staging area에 올렸다.
출력 결과
Changes to be committed: #커밋에 반영 될 변경사항
(use "git restore --staged <file>..." to unstage)
modified: caculator.py
Changes not staged for commit: #변경사항은 있었지만 staging area에 올라가지 않았다는 의미
# 커밋에 반영되지 않는 변경사항
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: Free
git add를 실행해서 staging area에 올린 파일을 삭제하는 명령어
현재 working drectory내 수정된 파일 모두 staging area에 올림