[Git/SourceTree] Sourcetree '자식 커밋 쌍방향 재배치(Interactive Rebase) 안 뜸' 해결하기

커밋 메시지를 변경하기 위해 자식커밋쌍방향 재배치 를 클릭했는데 텅 비어있다. .


Sourcetree에서 자식커밋 쌍방향 재배치(Interactive Rebase)가 나타나지 않는 이유
1. 브랜치가 HEAD 상태가 아닌 경우
반드시 로컬 브랜치에 체크아웃되어 있어야 한다.
Detached HEAD 상태에서는 해당 메뉴가 비활성화된다.
→ Sourcetree 상단에서 현재 브랜치가 정상적으로 선택되어 있는지 확인해야 한다.
2. 현재 브랜치에 커밋 수가 부족한 경우
쌍방향 재배치는 최소 두 개 이상의 커밋이 존재해야 실행할 수 있다.
커밋이 1개 이하일 경우, 메뉴가 나타나지 않는다.
3. 메인 브랜치(main/master)에서 실행한 경우
일반적으로 rebase는 기능 브랜치(feature/xxx 등) 에서 사용한다.
메인 브랜치에서는 fast-forward 방식 병합을 우선시하기 때문에, 메뉴가 제한될 수 있다.
4. Sourcetree의 UI 버그 또는 메뉴 위치 문제
메뉴가 숨겨져 있거나, 구버전의 UI 버그로 인해 보이지 않을 수 있다.
커밋 우클릭 → 쌍방향 재배치 시작
상단 메뉴 작업 → 쌍방향 재배치 시작
→ Sourcetree를 최신 버전으로 업데이트하거나, 다음 경로에서 메뉴를 수동으로 찾아야 한다.
*나의 경우 이게 원인이였다..
5. Git 설정에 의한 문제
.gitconfig 파일의 설정이 영향을 줄 수도 있다. 다만, 일반적인 상황에서는 큰 원인이 되지 않는다.
확인 명령어
git config --global rebase.autosquash
그리고 최후의 대안 : 터미널에서 직접 실행
1. 터미널 열기
현재 Git 프로젝트 디렉토리에서 터미널을 연다.
2. 커밋 로그 확인
변경하고 싶은 커밋이 몇 번째인지 확인하기 위해 다음 명령어를 입력한다.
git log --oneline
ex) 예를 들어 7c4e12a 커밋 메시지를 바꾸고 싶다면, 해당 커밋은 HEAD로부터 두 번째 커밋이다.
e3a1b9f Fix: login button margin
7c4e12a Add: login form UI
f7b3d2c Init: project setup
3. 리베이스 실행
git rebase -i HEAD~3
HEAD~3은 최근 3개의 커밋을 대상으로 한다. 대상 커밋보다 약간 더 넉넉하게 잡는 것이 좋다.
4. 편집기에서 pick → reword 변경
리베이스 에디터가 열리면 다음과 같은 형식이 나옴.
pick e3a1b9f Fix: login button margin
pick 7c4e12a Add: login form UI
pick f7b3d2c Init: project setup
바꾸고 싶은 커밋 줄에서 pick을 reword로 바꾼다.
pick e3a1b9f Fix: login button margin
reword 7c4e12a Add: login form UI
pick f7b3d2c Init: project setup
저장 후 종료한다.
5. 새로운 커밋 메시지 입력
변경 대상 커밋에 대해 메시지를 입력하라는 창이 뜬다. 원하는 메시지를 입력하고 저장 후 종료한다.
6. 리베이스 완료 확인
리베이스가 정상적으로 완료되면 다음과 같은 메시지가 출력된다.
Successfully rebased and updated refs/heads/your-branch-name.
💡 주의: push한 커밋이면 --force 필요
이미 원격 저장소에 push한 커밋을 수정한 경우, 강제 푸시 하기!!