폴더는 현재 작업중인 동적인 공간을 말한다.
( 비유하자면 카메라의 앵글 )
저장소와 폴더사이에 위치하면서 정적인 특징을 가진다.
폴더의 변경사항을 기록한다 (스테이징)
( 비유하자면 카메라로 찍은 사진 )
인덱스를 커밋하면 헤드에 기록이 남는다
( 비유하자면 여러 사진이 담겨 있는 사진첩 )
vscode로 깃을 관리하자
깃은 작업영역과 인덱스영역, 헤드영역을 가진다
- 초기화 ( 마지막에 .git 확인 ) - 작업영역으로 선언
git init
- 변경된 사항 추가 ( . 은 변경된 모든것을 추가 ) - 작업내용을 인덱스에 추가
git add .
- 커밋 - 인덱스의 내용을 헤드영역에 저장
git commit -m "( 커밋에 남길 메세지 )"
- 로그 확인
git log
git log --all ( HEAD 변경시 로그 확인 )
git log --all --oneline ( 간략하게 )
- 파일 상태 확인
$ git status
- git bash 클리어 ( shell 명령어 / 윈도우에서는 cls )
clear
- 원격 저장소 추가
git remote add origin + ( 생성된 레파지토리 주소 )
- 마스터 브랜치 생성 ( 업로드 + 병합 )
git push origin master
브라우저 연결시키면
연결 잘못되면 끊어서 다시 연결
git remote rm origin
삭제를 해도 나오는 메세지는 없으니까 제대로 입력하면 된다.
- 브랜치에서 다운받기
git init
git remote add origin "깃허브 원경저장소 경로"
git fetch origin master
git merge origin/master
( fetch
는 가상의 공간에 다운로드 , merge
는 로컬저장소에 합치기 )
( 참고로 git merge
까지 입력후 tab
몇 번 누르면 사용가능한 명령어 알려줌 )
( git remote -v
연결상태 확인 )
- fetch + merge 한번에
git pull origin master
- 최초에 한번 사용 가능 ( 위 4줄 한번에, 새로운 로컬폴더에 )
git clone "깃허브 원경저장소 경로"
하던 작업을 집에 와서 이어할 경우
- 서브 브랜치를 열기 ( 생성 -> 다운/병합 )
git checkout -b "브랜치 이름"
git pull origin "브랜치 이름"
- ( 다운 -> 생성/병합 )
git fetch origin
git checkout -b "브랜치 이름" origin/"브랜치 이름"
두번째 방법이 많이 쓰이는데 첫번째 방법은 하나의 브랜치를 다운받고 머지하지만 두번째는 모든 브랜치를 다운받기 때문이다
리셋을 사용해서 히스토리를 되돌릴 수 있다
돌아가고 싶은 헤드의 해쉬값을 입력해서 그 이후의 히스토리를 날린다
( 현재 로그는 리셋해도 변경 없음 )
- 커밋, 인덱스, 작업영역 모두 삭제
git reset --hard "삭제할 로그의 해쉬값"
- 커밋, 인덱스 삭제 - add 하지 않은 상태와 동일
git reset --mixed "삭제할 브랜치"
작업 영역의 내용 변경이 필요할때 사용
- 커밋만 삭제 - add 까지만 한 상태와 동일
git reset --soft "삭제할 브랜치"
- 파일을 특정 버전으로 롤백
git checkout [hash] -- path/to/your/file.txt
✅ 커밋 로그 변경시에 주로 사용한다
이전 커밋에 지금 작업 내용을 추가할때 사용한다
git push -f origin master 나만 쓰는 브랜치에 강제 푸쉬
레퍼런스 - https://www.youtube.com/watch?v=asBU9SqAgmI&list=PL93mKxaRDidFtXtXrRtAAL2hpp9TH6AWF&index=11
- 한번이라도 커밋을 했다면
git reflog
명령어를 입력하면 로그가 전부 나온다
- 여기서 돌아가고 싶은 커밋으로
git reset --hard "해쉬값"
으로 복구 할 수가 있다 !! 👍👍👍
- 현재 커밋 로그를 잘못 입력했을때
git commit --amend -m "변경할 커밋 메세지"
또 다른 방법은 바로 전의 로그로 reset --soft 를 한다음 다시 커밋하면 된다
- 새로운 브랜치 생성
git branch "생성할 브랜치"
- 생성된 브랜치 목록 확인
( 현재 브랜치*
로 표시되어 있음 )
git branch
헤드가 2개의 브랜치를 가리킨다
- 브랜치 변경
git checkout "변경할 브랜치"
- 브랜치 생성과 헤드 변경을 한번에
git checkout -b "생성할 브랜치"
🔥 주의점 !
작업을 진행하다가 커밋을 하지 않고 브랜치를 변경하면 기존의 작업 내용이 변경된 브랜치로 옮겨가게 된다.
즉, checkout ( 브랜치변경 )을 실행할때는 무조건 커밋부터 해야한다
checkout 다음에 브랜치 이름말고 아래와 같은 해쉬값을 넣어도 된다
하위 브랜치의 작업을 상위 브랜치로 머지( Merge )할때는 상위 브랜치에서 명령어 입력
머지에는 2종류가 있는데 메인브랜치에서 나온 서브브랜치만 커밋이 변경되면 fast-foward merge
를 하고
메인브랜치와 서브브랜치 모두 변경된 커밋이 있으면 3-way merge
를 하게 된다
- 병합할 브랜치로 이동
git checkout "병합을 할 브랜치"
- 머지 실행
git merge "불러와서 병합할 브랜치"
- .gitignore -> git add . -> 커밋하고 확인
git status --ignored
git branch -r
- 원격 브랜치의 커밋 로그 확인
git log origin/main --oneline [--graph --decorate]
- rebase
git fetch origin 원격 저장소의 최신 커밋을 가져온다.
git rebase origin/main
저의 마음도 세팅해주세요!!