merge: 두 개의 branch를 이어 붙히는 것 이 과정으로 커밋 하나가 생겨나게 된다.

rebase: 브랜치의 마디, 커밋들을 대상 브랜치로 옮겨 붙이는 것

rebase를 한 뒤 히스토리는 한 줄로 깔끔하게 정리되지만, merge는 브랜치에 흔적을 남긴다.
많은 브랜치를 사용하는 프로젝트에서는 merge는 굉장히 복잡해진다.
Working directory: 새로운 파일이 추가되거나, 기존 파일이 변경, 삭제된 경우
- untracked: Add된 적 없는 파일, ignore된 파일
- tracked: Add된 적 있고, 변경내역이 있는 파일
Staging area: Working directory의 파일들을 add하게 되면 Staging area에 들어가게 된다.
Repository: Staging area의 파일들을 commit하게 되면 Repository에 들어가게 된다.
파일 삭제 하면 파일의 삭제내역이 working directory에 있다.
파일의 삭제를 git rm 명령어로 하게 되면, 파일의 삭제내역이 staging area에 있다.
파일의 이름을 변경하게 되면, working directory의 변경하기 전 파일의 삭제가 tracked영역에 있게되고 변경한 파일의 생성이 untracked에 있게된다. 이 후 add를 해야 파일의 이름이 바뀐거라고 git이 인식한다.
파일의 이름 변경을 git mv명령어로 하게 되면 바로 파일의 이름 변경을 git이 인식한다.
(add된 상태 즉, staging area에 있는 상태)
soft: repository에서만 제거하고, staging area에 남겨 놓는다.
(add는 하고 commit은 되지않는 상태)
mixed: 어떠한 변화를 working direectory에 남겨 놓는다. staging area에서 지운다.
hard: 내역 자체를 지운다. 즉, 어떠한 변화를 working directory까지 삭제한다.
^또는 ~의 개수만큼 이전으로 이동
커밋 내역 그대로 남겨두고 파일들의 상태만 이동함
--global: 전역 설정
--global 빼고하면 현재 깃만 설정
--wait: 에디터에서 수정하는동안 CLI 금지
git config --global core.editor /usr/bin/vim
git config --global core.autocrlf (window: true / mac: input)
- 줄바꿈 호환 문제 해결
git config --global init.defaultBranch main
- 기본 브랜치명 (master -> main으로 변경)
git config --global push.default current
- push시 로컬과 동일한 브랜치명으로
git config --global alias.(단축키) "명령어"
- 별칭 지정
- ex) git config --global alias.cam "commit -am"