Git

- 작업 트리(Work Tree)
우리가 작업하고 있는 폴더, 디렉터리
- 인덱스(index)
커밋을 실행하기 전의 저장소와 작업 트리 사이에 존재하는 공간 (Staging Area)
- 스테이징(Staging)
인덱스에 파일 상태를 기록하는 것
Github
- Git을 호스팅해주는 웹 서비스
- Git 저장소 서버를 대신 유지 및 관리해주는 서비스
Git Repository (저장소)
- 원격 저장소(Remote Repository)
파일이 원격 저장소 전용 서버에서 관리되며 여러 사람이 함께 공유하기 위한 저장소
- 로컬 저장소(Local Repository)
내 PC에 파일이 저장되는 개인 전용 저장소
Git 기본 명령어
init
- git init
- 생성하기
- local repository를 만든다. 이 로컬 저장소는 바로 .git에 들어가있음.
- 새로운 git 저장소 생성
pull
- git pull
- 가져와 병합하기
- 원격 저장소에서 로컬 저장소로 업데이트
- 원격 저장소에서 최신 변경 이력을 다운로드. 내 로컬 저장소에 그 내용을 적용
fetch
- git fetch origin
- 가져오기
- 원격 저장소의 내용을 확인만 하고 로컬 데이터와 병합은 하고 싶지 않은 경우에 사용.
- 원격 저장소의 최신 이력을 확인, 가져온 최신 커밋 이력은 이름 없는 브랜치로 로컬에 가져옴. 'FETCH_HEAD'의 이름으로 체크아웃
- fetch 명령어 후 merge 를 수행하는 것은 pull 명령어와 동일한 기능
add
- git add <인덱스에 등록할 파일명>
- 추가하기
- 변경사항을 인덱스에 등록
commit
- 추가하기
- git commit -m "커밋 내용"
- 이전 커밋 상태부터 현재 상태까지의 변경 이력이 기록된 커밋(or 리비전) 생성됨
- '작업 트리'에 있는 변경 내용을 저장소에 바로 기록하는 것이 아니라 그 사이 공간인 '인덱스'에 파일 상태를 기록(stage - 스테이징 한다고 표현함.)
commit 진행 시, 내용 입력 필수
push
- 밀어넣기
- git push
- 원격 저장소로 변경된 파일을 업로드하는 것
clone
- 복제하기
- git clone URL
- 원격 저장소를 복제(원격 저장소의 내용을 통째로 다운로드함)
- 변경 이력도 함께 로컬 저장소에 복제 되어옴. 원래 원격 저장소와 똑같이 이력을 참조하고 커밋 진행이 가능함.
reset
- 되돌리기, 이력 x
- git reset <옵션> <돌아가고싶은 커밋>
- 돌아가려는 커밋으로 리파지토리는 재설정, 해당 커밋 이후의 이력은 없앰.
revert
- 되돌리기, 이력 o
- git revert <되돌릴 커밋>
- 상태를 되돌리는 명령어, reset 명령어와 달리 이전 이력은 그대로 유지
merge
- 병합하기, 바로 합치기
- 여러 개의 브랜치를 하나로 모을 수 있음
- 내가 끌어온 저장소가 최신 버전이 아닌 경우, 즉 내가 pull 을 실행한 후 다른 사람이 push 를 하여 원격 저장소를 업데이트 해버린 경우에는 내 push 요청이 거부될 수 있음
- 이런 경우 다른 사람의 업데이트 이력을 내 저장소에도 갱신 해야함.
rebase
- 병합하기
- 브랜치 이력 재정렬하기
- 히스토리 관리를 별로 신경쓰지 않고 혼자서만 커밋 or 믿을수 있는 소수만 커밋한다면 merge 대신 rebase 사용을 권장함.
stash
- 임시 저장하기
- 파일의 변경 내용을 일시적으로 기록해두는 영역
- 작업 트리와 인덱스 내에서 아직 커밋하지 않은 변경을 일시적으로 저장해 둘 수 있음
- stash 에 저장된 변경 내용은 나중에 다시 불러와 원래의 브랜치나 다른 브랜치에 커밋 가능함.
checkout
- 전환하기
- git checkout <브랜치명>
- 원하는 다른 브랜치로 전환 시 사용
merge (바로 합치기) vs rebase (브랜치 이력 재정렬하기)
- merge
변경 내용의 이력이 모두 그대로 남아 있기 때문에 이력이 복잡해짐
- rebase
이력은 단순해지지만, 원래의 커밋 이력이 변경됨. 정확한 이력을 남겨야 할 필요가 있을 경우에는 사용하면 안됨.
리모트(Remote) 저장소
인터넷이나 네트워크 어딘가에 있는 저장소
- 리모트 저장소 확인: git remote
- 리모트 저장소 추가: git remote add <단축이름> url
- 리모트 저장소 살펴보기: git remote show <리모트 저장소 이름>
- 리모트 저장소 이름 변경: git remote rename <기존 리모트 저장소 이름> <변경할 리모트 저장소 이름>
- 리모트 저장소 삭제: git remote remove <리모트 저장소 이름>
출처
https://sloth9143.github.io/git-basic-command/