base, branch, merge
git merge
- a라는 브랜치의 내용을 b라는 브랜치에 merge하려면
- 브랜치 b에 들어가서 (git checkout b)
- 브랜치 b에서 "git merge a"를 실행
conflict
"======="는 구분자
3 way merge
- git이 conflict를 어떻게 처리하는가?
- 3 way merge는 merge하는 두 브랜치(여기서는 here, there)의 base와 비교!!!
git mergetool
git config --global merge.tool p4mergetool
branch
- 아무리 사소한 기능이라도 branch를 만들어서 기능을 만들고
- 필요없으면 그냥 버리거나 필요하면 마스터에 merge하고 버리기
git workflow
git flow
cherry-pick
rebase
- 타임라인이 좀 더 깔끔해짐
head와 checkout
- 기본적으로 해당 브랜치의 가장 마지막 commit을 바라봄
- checkout은 head를 바꾸는 것
checkout 커밋id
head가 해당 커밋id를 바라보도록 함
checkout 브랜치이름
head가 해당 브랜치의 마지막 commit을 바라보게함
checkout vs. reset
- checkout은 head를 제어
- reset은 head가 브랜치를 가르키고 있는 동안은 브랜치를 제어
checkout
reset
- reset은 해당 브랜치를 바꾸는 것임
- reset master를 하면
- 구글의 head를 master의 헤드로 바꿈, 결론적으로 3번 commit은 삭제됨
Reference