> git log
> git log --oneline
> git shortlog //커밋ID X
> git show 커밋ID //특정 커밋의 상세정보(브랜치 지정가능)
> gitk //GUI
> git reflog //HEAD가 가리켰던(ref) 커밋의 이력(log)을 보여줌.
> git reflog 브랜치명
> git log -g //reflog를 상세히 보여줌
> git checkout HEAD@{4}
> git reset --hard HEAD@{4}
파일이름 대신 object id로 파일을 관리.
커밋 당시의 실제 파일 대신 object id의 목록만 저장.(파일은 별도로 저장)
HEAD처럼 어떤 commit을 가리키는 포인터.
> git branch dev //dev라는 이름의 브랜치를 생성
> git checkout dev //HEAD를 dev브랜치로 이동
> git checkout main //main브랜치로 이동
merge는 두 branch가 가리키고 있는 커밋을 합치는 것.
> git merge dev --ff //main브랜치를 dev와 merge. 새로운 커밋X, 브랜치만 이동함.
> git merge dev --no-ff //무조건 새로운 커밋 생성.
> git init
aaa.txt을 만들고, 111입력 후 저장.
> git add aaa.txt
> git commit -m "add aaa.txt"
> git branch dev //dev 브랜치 생성
> git checkout dev //head를 dev로 이동
aaa.txt에 333추가 후 저장.
> git add aaa.txt
> git commit -m "modified aaa.txt"
> git checkout main
aaa.txt에 222추가.
> git add aaa.txt
> git commit -m "modified aaa.txt @main"
> git merge dev //conflict(충돌) 발생
aaa.txt파일을 수정 후
> git add aaa.txt
> git status //현재 충돌은 해결됐지만, 여전히 머지중이다 라고 나옴.
> git merge --continue //머지 계속해라
//> git merge --abort //머지 취소
: wq //빠져나와서 cmd화면으로 이동
> git checkout dev //dev에서 commit하면 안됨. 최신상태로 ff 해야 함.
> git merge main
reset은 HEAD와 branch가 함께 이동.
checkout은 HEAD만 이동.
어떻게 이력(history)을 남길 것인가?
1. 하나의 main 브랜치에 commit - 권장X