git3 - CLI branch & conflict 4.2. 병합 : 서로 다른 파일 병합

data_hamster·2023년 4월 28일
0

기존 실습 때 사용하던 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 브랜치로 합치겠다.

  • 우선 main 브랜치 상태가 되어야 한다. Head를 main으로 가져온다.
  • 내가 합치고 싶은 브랜치를 merge 명령을 통해 지정하면 된다.
  • git merge o2

    이 merge가 왜 만들어졌는지에 대한 설명이 있어야 한다. merge commit이 자동으로 생성된다. 더 안쓰고 나가도 된다.


    새로운 브랜치 Merge branch '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을 사용하면 된다.

profile
반갑습니다 햄스터 좋아합니다

0개의 댓글