기존 실습 때 사용하던 manual
대신 새로운 저장소를 만들어 사용하려고 한다.
창을 하나 더 만들어 로그를 추적한다. git log --all --graph --oneline
git init manual-merge
를 하면 manual-merge
라는 디렉토리가 현 위치에서 생성되고, 그 디렉토리 내에 git
이 생성된다. 하다보면 느끼는게 정말 세부적인 편의 기능들이 많고 이런 기능들이 익숙해져야 할꺼 같다. 그 전까진 --help
를 자주 보려고 한다.
git branch o2
브랜치를 1개 생성.
이미 커밋한 경우도 git commit --amend
라고 하면 수정할 수 있다. 단, 현재 가리키고 있는 커밋에 대한 수정이다.
git checkout o2
o2로 넘어가서
o2.txt 생성.
git add .
git commit -m "o2 work 2"
새로운 버전이 생긴 것을 확인할 수 있다. 두 work 2는 부모를 work 1로 갖는 것을 볼 수 있다.
각 브랜치에서는 master.txt, o2.txt가 생성되어있다.
현재 나는 main에 o2 브랜치를 병합하고 싶다. o2 브랜치의 내용을 main 브랜치로 합치겠다.
git merge o2
현재 Head main은 Merge branch o2를 가리킴. 그리고 두 조상을 갖고 있다.
이건 헷갈리다보니 연습을 많이 해봐야 한다. 그럼 현재 생성된 머지 브렌치를 취소하려고 한다.
git reset --hard '리셋하고 싶은 버진'
여기선 master work 2
풀 네임이 아니고
oneline에 뜬 내용만으로도 인식한다.
main이 다시 master work 2에 위치하고, 헤드도 따라온 모습을 볼 수있다.
매번 같은 실습을 하면 지루하니 이번엔 o2 브랜치에서 main을 가져와 병합해 보았다.
git checkout o2
헤드를 o2로 위치시키고,
git merge main
o2에서 main을 가져와 병합한다.
마찬가지로 merge를 위한 commit이 생성되었고, nano 에디터를 나오면
최종 병합이 o2인 새로운 머지 브렌치가 생성된 것을 확인할 수 있다.
git reset --hard 돌아가고자하는 브랜치 id
주의할 점은 head는 o2를 가리킨 상태에서 진행해야한다.
그리고 git revert
의 경우, 돌아가고자 하는 브랜치 id가 아닌 돌리고 싶은 브랜치의 id를 입력하면 된다. 이 역시 새로운 커밋이 생성된다. 이를 취소하려면 reset을 사용하면 된다.