IntelliJ에서 Git Rebase 사용하기 (1)에서의 문제점을 해결 방법에 대해 설명드리도록 하겠습니다.
문제점 상황.
develop -> feature/A -> feature/B 순으로 브랜치를 생성하도록 하겠습니다.
develop -> feature/A 까지 작업을 한 상태라고 생각하고,
feature/B 브랜치에서 커밋을 해주고, PR을 올리는 상황이라고 가정합니다.
의문점.
feature/A 브랜치에서 작업 하였던 커밋 내역이 왜 feature/B 브랜치에 남아 있는 것인지 이유를 몰랐다.
분명, feature/B 브랜치에서 커밋을 해주고, PR을 올릴때를 보면 없었는데, 왜 생겨 났는지…
그 이유는, 내가 몇 가지 추가 작업을 해주지 않아서 그런 것이다.
다시, 처음부터 작업하는 것을 보여 드리겠습니다.
브랜치 순서
base-Branch -> branch-A -> branch-B
(develop)
base-Branch 브랜치에서 파일 생성 후 커밋 + push까지 진행
branch-A, branch-B 브랜치 생성하는 방법
IntelliJ에서 Git Rebase 사용하기 (1) 을 보시면 내용이 나와 있습니다.
여기서 간단하게 설명드리면, Issues로 브랜치를 생성하든,
인텔리제이에서 바로 브랜치를 생성하든 방법은 두 가지입니다.
- 만약, 프로젝트 중이라면 Issues를 만들어 기록을 할 수 있도록 합시다.
branch-A 브랜치 또한, 파일 생성 후 커밋 + push까지 진행
base-Branch로 branch-A 브랜치 PR 올리기.
branch-B 브랜치 파일 생성 후 커밋 + push 까지 진행
문제점. 잘못 생각하고 있던 것.
base-Branch로 branch-B 브랜치 PR 올리기.
branch-A 브랜치 커밋 내역이 포함되어 있다. 하지만, 이건 당연히 출력되는 것이 맞는 것이다.
- 내가 지금까지 잘못 생각하고 있던 것.
리뷰어의 요청으로 코드를 추가 + 수정 작업 요청이 들어왔다.
branch-A 브랜치에서 수정 + 추가 커밋 후 push 하기
branch-A 브랜치에서의 추가 push 할 때의 커밋 로그 확인하기.
branch-A 브랜치 PR에서 추가 커밋 로그 확인하기.
이건 당연한 것이다.
리뷰어의 수정 + 추가 확인을 받았다면,
branch-A 브랜치 PR “Merge” 진행해주기
Merge를 진행한, base-Branch 브랜치로 인텔리제이에서 이동시켜주기.
왜 이렇게 하는가? → Remote(=원격)에 있는 싱크를 내 컴퓨터인 Local에서도 맞추기 위함이다.
base-Branch 브랜치로 이동하였다면,
원격에서 Merge가 진행되었으니, 로컬로 내려받기 위해 git pull 진행한다.
base-Branch 브랜치에서 확인했을 때, 다른 브랜치들의
가장 최근 추가한 것까지 잘 받아졌는지 확인하기.
작업 중인, branch-B 브랜치로 이동한다.
branch-B에서 base-Branch 브랜치로 리베이스 한다.
만약, 생성 된 브랜치들을 모두 적용하고 싶은 경우라면?
develop 브랜치에서 1 → 2 → 3 → 4 순으로 브랜치 따서 작업했다고 생각 했을때
순서대로 develop 브랜치를 리베이스 하면 되는 것이다.
push 목록에 보면 커밋 내역들이 있는 걸 확인할 수 있다.
- 이게 정상이다.
- push 올려도 상관없지만, 나는 올리지 않았다
나의 관심사는 branch-B 브랜치에서의 작업한 커밋 내역만 보고 싶기에
명령어를 사용하여 다른 브랜치들의 커밋 내역은 지우자.
- git push -f를 진행해준다는 것이다.
branch-B 브랜치의 그래프 확인.
branch-B 브랜치가 가장 위에 있고, 다른 브랜치 작업들은 밑에 있는 것을 알 수 있다.
이렇게 되면 정상동작 한 것이다.
깃허브에서도 커밋 내역을 확인해 보면,
branch-B 브랜치의 커밋 내역들만 존재하는 것을 알 수 있다
'git' 카테고리의 다른 글
중복 커밋 내역 합치는 방법 (0) | 2024.07.09 |
---|---|
Git Issues 사용 방법 (0) | 2023.12.24 |
IntelliJ에서 Git Rebase 사용하기 (1) (0) | 2023.12.24 |
.gitignore 정상 동작하지 않을 경우 (0) | 2023.12.05 |