Fork GUI  https://git-fork.com/

Fork 프로그램(GUI)을 사용하면 복잡한 터미널 명령어 없이 클릭과 드래그 앤 드롭만으로 원본 저장소(upstream)의 변경 사항을 가져와 깔끔하게 커밋 히스토리를 정렬(Rebase)할 수 있습니다.


1단계: 원본 저장소(Upstream) Remote 등록하기 (최초 1회)

내 Fork 원격 저장소(origin) 외에 오픈소스/프로젝트 원본 저장소를 Fork 앱에 등록합니다.

  1. Fork 상단 메뉴에서 RepositoryAdd Remote... 를 클릭합니다.

(또는 좌측 사이드바의 Remotes 항목 우클릭 ➔ Add New Remote...)
2. 설정 창에서 다음 항목을 입력합니다:

  • Name: upstream
  • Repository URL: 가져올 원본 저장소 Git URL
  1. Add 버튼을 누릅니다.

(좌측 사이드바 Remotes 아래에 originupstream이 나란히 표시되면 성공입니다.)


2단계: 최신 코드 패치(Fetch) 및 리베이스(Rebase) 진행

  1. 최신 커밋 가져오기 (Fetch)
  • 상단 툴바의 Fetch 아이콘을 클릭합니다.
  • Fetch from: 항목에서 upstream을 선택(또는 All Remotes 체크)하고 Fetch를 누릅니다.
  1. 작업할 로컬 브랜치 체크아웃
  • 좌측 사이드바 Branches에서 동기화할 내 로컬 브랜치(예: main)를 더블 클릭하여 체크아웃합니다.
  1. Upstream 기준으로 Rebase 실행
  • 좌측 사이드바의 Remotesupstreammain 브랜치를 찾습니다.
  • upstream/main우클릭한 뒤 Rebase 'main' on 'upstream/main' 을 클릭합니다.
  • (가운데 커밋 그래프 화면에서 upstream/main 브랜치 태그를 우클릭해도 동일합니다.)*

💡 GUI에서의 Rebase 동작 방식
upstream의 최신 커밋들을 먼저 내 브랜치 밑으로 깔끔하게 배치한 후, 내가 로컬에서 작업한 커밋들을 그 위로 다시 쌓아 올립니다. 불필요한 "Merge branch..." 커밋이 남지 않아 그래프가 한 줄로 깨끗하게 유지됩니다.


3단계: 충돌(Conflict) 해결하기 (발생 시)

코드 충돌이 발생하면 Fork 상단에 Rebase in progress 알림 창이 뜨며 충돌 상태가 표시됩니다.

  1. 좌측 Changes 탭으로 이동하면 충돌이 발생한 파일 목록이 빨간색 아이콘 등으로 표시됩니다.
  2. 충돌 파일을 클릭한 후 Fork 내장 Merge Tool / Conflict Solver 창에서 유지할 코드를 선택(Resolve)하고 저장합니다.
  3. 충돌 해결이 끝난 파일을 Stage 영역으로 올립니다.
  4. 상단 알림 바의 Continue Rebase 버튼을 클릭하여 다음 단계를 진행합니다.
  • (리베이스를 완전히 취소하고 이전 상태로 되돌리려면 상단 바의 Abort 버튼을 클릭합니다.)

4단계: 내 원격 저장소(Origin)로 강제 푸시(Force Push)하기

Rebase를 마치면 로컬 커밋의 해시값이 새로 갱신되므로 일반 푸시 시 오류가 발생합니다. 내 Fork 원격 저장소(origin)에 반영하기 위해 강제 푸시를 수행해야 합니다.

  1. 상단 툴바에서 Push 아이콘을 클릭합니다.
  2. 대상 저장소가 내 원격 저장소인 origin과 현재 브랜치(예: main)로 선택되어 있는지 확인합니다.
  3. 창 하단의 Force Push 체크박스를 활성화합니다.
  • (만약 체크박스가 비활성화되어 있다면, 체크박스 우측의 안내 문구를 클릭하거나 설정에서 안전 잠금을 해제해야 체크가 가능합니다.)
  1. Push를 누르면 내 GitHub/GitLab Fork 저장소에 원본의 최신 변경 사항과 내 작업 내역이 한 줄로 깨끗하게 반영됩니다.
반응형