homebrew 설치
🍺 homebrew
https://brew.sh/index_ko
homebrew가 설치되었다면
brew install git
설치되었는지+버전확인
git --version
git add 파일명
<!--해당 파일을 스테이징상태로 만든다.(커밋전단계)-->
git add .
<!--모든 파일을 스테이징상태로 만든다.-->
git commit -m '작명'
🤔스테이징이란?
현재 작업폴더에서 repository(저장소)로 이동하기 전에 대기장소
git status
현재 작업중인 branch 확인가능
사실 VScode 사용하면 gitLens나 gitGraph 쓰면 더 편함
git log --all --oneline --graph
커밋내역 그래프로 확인가능 (이역시 gitGrapch가 좀더 보기 편한듯)
git diff
<!--commit번호끼리 비교 가능-->
git difftool
<!--commit번호끼리 비교 가능-->
커밋끼리 비교가능
git branch 브랜치이름
<!--브랜치 생성-->
git switch 브랜치이름
<!--해당 브랜치로 이동-->
git branch -d 브랜치이름
<!--merge완료된 브랜치 삭제-->
git branch -D 브랜치이름
<!--merge안된 브랜치도 그냥 삭제해버리기-->
브랜치는 기존코드의 복사본

<!--합치고 싶은 브랜치에서 작업-->
git merge 합칠브랜치이름
<!--rebase and merge-->
git switch 새로운브랜치
git rebase main
git switch main
git merge 새로운브랜치
<!--squash and merge-->
git switch master
git merge --squash 브랜치명
git commit -m 작명
브랜치끼리 수정된 파일이 겹치지 않으면 그대로 성고
겹치는 파일이 있으면 충돌(conflict)발생
충돌된 파일에서 적용할 코드를 선택하여 저장하면 브랜치 완료
3-way merge
각 브랜치에 신규 커밋이 1회 이상 있을때 두 브랜치를 합쳐 새로운 커밋을 생성하는 merge의 기본 작동방식

fast-forward merge
새로운 브랜치에만 커밋이 있고 기존 브랜치에 커밋이 없어서 새로운 브랜치가 메인이 되는 브랜치

rebase and merge
브랜치의 시작점을 다른 커밋으로 옮겨주는것.
3-way merge를 강제로 fast-forward merge로 하고싶을때
(간단하고 짧은 브랜치들을 rebase하면 깔끔)
(conflict 주의)

squash and merge
3-way merge는 양이 많아지면 복잡하고 더러워보임
(git log에 3-way merge된 브랜치들의 commit 내역도 같이 출력)
그래프로 보면 연결된 선을 끊어버리고 메인에서 이어지는걸로 보임
rebase는 시작점 자체를 다른 브랜치에서 이어지도록 하게함

<!--파일의 상태를 마지막 commit으로 돌리고 싶을때-->
git restore 파일명
<!--입력한 commit아이디 시점으로 복구-->
git restore --source 커밋아이디 파일명
<!--특정 파일을 staging 취소-->
git restore --staged 파일명
<!--commit 취소하는법(여러개 취소가능)-->
git revert 커밋아이디
<!--최근 commit취소하는법-->
git revert HEAD
<!--과거로 모든걸 되돌리기
!!협업시 사용주의 요망!!-->
git reset --hard 커밋아이디
<!--reset인데 변동사항 지우지 말고 스테이징해놓기-->
git reset --soft 커밋아이디
<!--reset인데 변동사항 지우지 말고 스테이징 X-->
git reset --mixed 커밋아이디
<!--최근 작성한 코드가 마음에 안들어서 보관함으로 보내기-->
git stash
<!--stash로 보관중인 리스트 확인하기-->
git stash list
<!--stash 할때 메모 작성가능-->
git stash save '메모'
<!--stash 불러오기(가장 최근것부터) 지정가능-->
git stash pop
<!--stash 삭제하기-->
git stash drop 스태쉬번호
<!--stash 전부삭제하기-->
git stash clear