문제 상황 1.
A 개발자와 B 개발자가 참여하고 있는 팀 프로젝트에서 A 개발자가 `feature/login` 이라는 브랜치에서 로그인 기능을 개발하고 있다가. 실수로 기능 개발이 완료되지 않은 상태에서 `main` 브랜치에 `merge`를 하고 말았다. `main` 브랜치를 `merge`되기 이전으로 돌리고 싶다면, A는 어떻게 해야할까?
스포 방지용
.
.
.
.
.
.
.
.
.
.
답변 1.
정답은 `main` 브랜치에서 `git reset --hard <commit hash>`를 입력하는 것이다. `main` 브랜치의 소스 코드가 아직 원격 저장소 (`github` 혹은 `gitlab`)에 올라가지 않은 상황이라면, 로컬에서만 `reset` 을 진행하면 된다! `main` 브랜치에서 `git log` 명령어를 입력한 후, `merge` 되기 이전의 commit hash값을 복사하여 `<commit hash>` 자리에 붙여넣기 하면 된다.
문제 상황 2.
A 개발자는 다시 `feature/login`으로 `checkout` 하여 기능 개발을 진행하던 도중, `main` 브랜치에 중요한 업데이트 사항이 생긴 것을 발견했다. 이는 현재 `feature/login`에서 개발 중인 기능에도 영향이 가는 업데이트라서 현재 브랜치에도 반영하려고 하는데, 이 경우 A 개발자는 어떤 명령어를 사용하면 될까?
스포 방지용
.
.
.
.
.
.
.
.
.
.
답변 2.
정답은 `main` 브랜치로 `checkout` 하여 `git pull origin main`으로 업데이트 사항을 로컬로 가져온 후, `git checkout feature/login`한 다음 `git merge main`을 하면 된다! repository에서 로컬로 업데이트 사항을 가져온 후, 작업 중이던 브랜치로 돌아가 `main` 브랜치를 `merge`하는 것이다!