staging area의 현 상태를 그대로 하나의 버전으로 남기는 작업, 또는 그 결과물을 가리키는 말
1.working directory
2.staging area
3.repository
1.working drirectory(working tree):작업을 하는 프로젝트 디렉토리를 말한다.
2.staging area:gid add를 한 파일들이 존재하는 영역
커밋을 하게 되면 staging area에 있는 파일들만 커밋에 반영된다.
(왜 굳이 staging area가 필요할까? 수정한 파일중에 특정 파일만 선발하여 git commit을 하고 싶을 수 있기 때문에)
3.repository:working directory의 변경 이력들이 저정되어 있는영역
그러니깐 커밋들이 저장되는 영역
git status:깃이 인식하고 있는 디렉토리의 현재 상태를 보여준다
cd:파일에 접속한다
touch:파일을 생성한다
git add .:한번에 수정된 파일을 staging area에 추가할 수 있음
Git파일들의 상태
크게 Untracked와 Tracked로 나뉜다
먼저 Untracked는 추적되지 않고 있는 상태를 말한다
예를 들어 파일을 새로 생성하고 git add를 해주지 않으면 이상태를 유지한다
Tracked는 Staged, Unmodified, Modified로 나뉠 수 있다.
1.Staged상태
파일의 내용이 수정되고 나서 staged area에 올라와있는 상태를 Staged상태라고 한다.
2.Unmodified상태
현재 파일의 내용이 최신 커밋된 모습의 파일을 비교했을때 전혀 바뀐게 없는 상태 (어떤 파일을 git add했지만 이미 commit을 한 파일과 차이가 없을때)커밋을 하고 난 직후에는 working directory에 Unmodified상태로 파일들이 남아있게 된다.
3.Modified상태
최신 커밋의 모습과 비교했을 때 조금이라도 바뀐 내용이 있는 상태면 그 파일은 Modified상태이다
현재 디렉토리를 Git이 관리하는 프로젝트 디렉토리로 설정하고 그 안에 레포지토리(.git 디렉토리)생성
staging area에서 파일을 삭제
현재 staging area에 있는 것들 커밋으로 남기기
즉 레포지토리를 전송한다는 얘기
를 원격레포지토리 또는 리모트 레포지토리라고 한다.
1.안전성 확보
2.협업개발 가능
로컬레포지토리라고 한다.
로컬레포지토리의 내용을 처음으로 리모트 레포지토리에 올릴 때 사용한다
로컬 레포지토리 내용을 -> 리모트 레포지토리에 반영한다는 얘기
로컬 레포지토리에서 새로운 커밋을 할 때마다 그것들도 매번 리모트 레포지토리에 반영을 해줘야 한다.
반대로 리모트 레포지토리에 새롭게 커밋을 하면 새로운 커밋이 로컬 레포지토리에는 생기지 않는다. 그렇기 때문에 로컬 레포지토리에도 새로운 내용을 커밋을 해야하는데 그때 바로 git pull을 사용하면 된다
다른 사람의 리모트 레파지토리(깃허브 프로젝트의 레포지토리)를 내컴퓨터 복제하기 위해 사용함
파일 안에 내용을 '보고 싶을때 아
간단한 텍스트만으로 어떤 표시를 해두면, 자동으로 html태그로 전환되도록 약속된 문법
ㅇㅈㅇㅇ
커밋의 기록들을(커밋 히스토리) 다 보여준다.(git log -pretty=oneline)
어떤 점이 수정 되었는지 보여줌
복잡하고 킨 커밋 메세지를 쉽게 남길 수 있다.
git commit -> 텍스트 에디터 열림 -> 커밋 메세지 제목 작성 후 한줄 띄우고 그 다음 상세메세지를 적어준다
커밋의 상세 내용
왜 커밋을 했는지
어떤 문제가 있었고
-적용한 해결책이 어떤 효과를 가지는지
git add. -> git commit --amend(수정하다)->텍스트 에디터가 열림->여기서 커밋 메세지를 수정해도 됨(i를 눌러서)->wq->완료
git config alias.history 'log --pretty=oneline'
이렇게 설정하고
git history
입력했을때 git history를 한줄에 볼 수 있다.
git diff ( 더 과거의 커밋 아이디) (과거의 커밋 아이디)
보통 가장 최근에 한 커밋을 가리킴
매번 더 새로운 커밋을 가리킴
HEAD가 가리키는 커밋에따라 워킹디렉토리가 구성된다.
을 사용하면 HEAD가 과거의 커밋을 가리키게 할 수 있다! working directory의 내용도 과거 커밋의 모습으로 돌아가게 한다!
git reset --hard [가고 싶은 아이디]
과거 어떤 특정 시점 이후로 작업한 내용 커밋들 전부가 마음에 들지 않으면 과거의 마음에 들었던 커밋으로 돌아갈 수 있다!
mixed
HEAD와 staging area가 과거의 특정 커밋을 가리키게 한다
soft
Head가 과거의 특정 커밋을 가리키게 한->삭제된 커밋은 staging area에 디렉토리로 남아있다.
=만약 staging area에 있는 파일이 커밋과 똑같다면 git status를 했을때 staing area에는 표시되지 않는다 즉 내용이 다르면 git status를 했을때 staging area에 다시 표시된다.
hard
Head,Staging area, Working directory를 과거의 특정커밋을 가리키게 한다
(hard의 사용인 지양됨)
git reset --hard HEAD^(바로 아래꺼)
git reset --hard HEAD~2(2단계 밑에꺼)
보통 프로젝트에서 주요 버전의 시적점이 되는 커밋에 태그를 단다
git tag [태그이름][커밋 아이디]
git tag라고 입려하면 태그들이 보인다
git show [태그 이름]
태그가 가리키는 커밋을 보여준다
하나의 커밋 흐름
현재 존재하는 브랜치들을 보여줌
새로 만든 브랜치에 접속
브랜치를 생성하면서 접속
현재 branch:premium
후 텍스트 에디터에서 저장(:wq)후 실행
서로의 커밋이 충돌하는 현상
로컬 레포지토리의 한 브랜치가 리모트 레포지토리의 한 브랜치와 연결되어 그것을 계속 바라보는 상태가 되는 것