
Fork 프로그램(GUI)을 사용하면 복잡한 터미널 명령어 없이 클릭과 드래그 앤 드롭만으로 원본 저장소(upstream)의 변경 사항을 가져와 깔끔하게 커밋 히스토리를 정렬(Rebase)할 수 있습니다.
1단계: 원본 저장소(Upstream) Remote 등록하기 (최초 1회)
내 Fork 원격 저장소(origin) 외에 오픈소스/프로젝트 원본 저장소를 Fork 앱에 등록합니다.
- Fork 상단 메뉴에서 Repository ➔ Add Remote... 를 클릭합니다.
(또는 좌측 사이드바의 Remotes 항목 우클릭 ➔ Add New Remote...)
2. 설정 창에서 다음 항목을 입력합니다:
- Name:
upstream - Repository URL: 가져올 원본 저장소 Git URL
- Add 버튼을 누릅니다.
(좌측 사이드바 Remotes 아래에 origin과 upstream이 나란히 표시되면 성공입니다.)
2단계: 최신 코드 패치(Fetch) 및 리베이스(Rebase) 진행
- 최신 커밋 가져오기 (Fetch)
- 상단 툴바의 Fetch 아이콘을 클릭합니다.
Fetch from:항목에서 upstream을 선택(또는All Remotes체크)하고 Fetch를 누릅니다.
- 작업할 로컬 브랜치 체크아웃
- 좌측 사이드바 Branches에서 동기화할 내 로컬 브랜치(예:
main)를 더블 클릭하여 체크아웃합니다.
- Upstream 기준으로 Rebase 실행
- 좌측 사이드바의 Remotes ➔ upstream ➔ main 브랜치를 찾습니다.
upstream/main을 우클릭한 뒤 Rebase 'main' on 'upstream/main' 을 클릭합니다.- (가운데 커밋 그래프 화면에서
upstream/main브랜치 태그를 우클릭해도 동일합니다.)*
💡 GUI에서의 Rebase 동작 방식
upstream의 최신 커밋들을 먼저 내 브랜치 밑으로 깔끔하게 배치한 후, 내가 로컬에서 작업한 커밋들을 그 위로 다시 쌓아 올립니다. 불필요한 "Merge branch..." 커밋이 남지 않아 그래프가 한 줄로 깨끗하게 유지됩니다.
3단계: 충돌(Conflict) 해결하기 (발생 시)
코드 충돌이 발생하면 Fork 상단에 Rebase in progress 알림 창이 뜨며 충돌 상태가 표시됩니다.
- 좌측 Changes 탭으로 이동하면 충돌이 발생한 파일 목록이 빨간색 아이콘 등으로 표시됩니다.
- 충돌 파일을 클릭한 후 Fork 내장 Merge Tool / Conflict Solver 창에서 유지할 코드를 선택(Resolve)하고 저장합니다.
- 충돌 해결이 끝난 파일을 Stage 영역으로 올립니다.
- 상단 알림 바의 Continue Rebase 버튼을 클릭하여 다음 단계를 진행합니다.
- (리베이스를 완전히 취소하고 이전 상태로 되돌리려면 상단 바의 Abort 버튼을 클릭합니다.)
4단계: 내 원격 저장소(Origin)로 강제 푸시(Force Push)하기
Rebase를 마치면 로컬 커밋의 해시값이 새로 갱신되므로 일반 푸시 시 오류가 발생합니다. 내 Fork 원격 저장소(origin)에 반영하기 위해 강제 푸시를 수행해야 합니다.
- 상단 툴바에서 Push 아이콘을 클릭합니다.
- 대상 저장소가 내 원격 저장소인 origin과 현재 브랜치(예:
main)로 선택되어 있는지 확인합니다. - 창 하단의 Force Push 체크박스를 활성화합니다.
- (만약 체크박스가 비활성화되어 있다면, 체크박스 우측의 안내 문구를 클릭하거나 설정에서 안전 잠금을 해제해야 체크가 가능합니다.)
- Push를 누르면 내 GitHub/GitLab Fork 저장소에 원본의 최신 변경 사항과 내 작업 내역이 한 줄로 깨끗하게 반영됩니다.
반응형
'코드버전관리(git, svn)' 카테고리의 다른 글
| [Fork GUI 꿀팁] 사이드바 드래그 앤 드롭으로 브랜치 병합(Merge) 및 리베이스(Rebase) 초간단 처리법 (0) | 2026.09.10 |
|---|---|
| [Fork GUI] 로컬 브랜치를 원격(origin) 상태로 완전히 강제 일치시키기 (Hard Reset 가이드) (0) | 2026.09.09 |
| [GIT] pull 대기목록 확인하는 방법 (0) | 2026.08.22 |
| [TortoiseGit GUI] 클론(Clone)과 특정 브랜치 체크아웃(Checkout) 한 번에 끝내기 (0) | 2026.08.21 |
| [Git] 이미 커밋된 설정 파일, 로컬 변경 사항만 무시하기 (--assume-unchanged) (0) | 2026.08.20 |
