Soony's House

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

⚙️ERROR & CS/ERROR

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

soonybutter 2025. 5. 30. 15:48
728x90

 

 

 

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

 

 

 

 

 


 

 

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한 커밋을 수정한 경우, 강제 푸시 하기!!

 

 

728x90