git 기본 명령어와 원리 (2)

서현우·2022년 6월 6일
0

git

목록 보기
2/4

git log와 커밋ID

> 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를 상세히 보여줌

reflog

> git checkout HEAD@{4}
> git reset --hard HEAD@{4}

git이 파일을 관리하는 방식

파일이름 대신 object id로 파일을 관리.
커밋 당시의 실제 파일 대신 object id의 목록만 저장.(파일은 별도로 저장)

branch

HEAD처럼 어떤 commit을 가리키는 포인터.

> git branch dev //dev라는 이름의 브랜치를 생성
> git checkout dev //HEAD를 dev브랜치로 이동
> git checkout main //main브랜치로 이동

fast-forward merge

merge는 두 branch가 가리키고 있는 커밋을 합치는 것.

> git merge dev --ff //main브랜치를 dev와 merge. 새로운 커밋X, 브랜치만 이동함.

no fast-forward merge

> git merge dev --no-ff //무조건 새로운 커밋 생성. 

merge conflict

실습

> 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 vs checkout

reset은 HEAD와 branch가 함께 이동.
checkout은 HEAD만 이동.

git의 브랜칭 전략

어떻게 이력(history)을 남길 것인가?
1. 하나의 main 브랜치에 commit - 권장X

  1. main에는 큰 변화 있을때만, dev브랜치에는 세부기능 추가 할 때마다
profile
안녕하세요!!

0개의 댓글