홈 › GitHub › 05 / 5

포크와 오픈소스 기여

섹션 7진행 0 / 5

6. 연습 문제

문제 1. 원격 이름 구분

포크 워크플로에서 내가 push 할 수 있는 원격과, 원본을 가리키는 원격의 이름을 각각 쓰세요.

text
origin: 내 포크 (push 가능)
upstream: 원본 저장소 (보통 읽기 전용)

git clone 은 origin 만 자동으로 등록하므로 upstream 은 직접 추가해야 합니다.

문제 2. upstream 추가

내 포크를 이미 clone 한 상태에서 원본 저장소를 upstream 이라는 이름으로 추가하는 명령을 쓰세요.

bash
git remote add upstream <원본 주소>

추가한 뒤 git remote -v 로 두 원격이 모두 보이는지 확인합니다.

문제 3. DCO 서명 커밋

커밋 메시지 끝에 Signed-off-by 줄을 자동으로 붙여 커밋하는 명령을 쓰세요.

bash
git commit -s -m "메시지"

이미 만든 커밋에 서명을 빠뜨렸다면 git commit --amend -s 로 고칩니다.

문제 4. main 동기화

내 포크의 main 에 커밋을 만든 적이 없을 때, 원본의 최신 상태로 맞추는 명령 두 개를 순서대로 쓰세요.

bash
git fetch upstream
git merge --ff-only upstream/main

--ff-only 가 실패한다면 main 에 내가 모르는 커밋이 있다는 뜻입니다.

문제 5. rebase 후 안전한 push

작업 브랜치를 main 위로 rebase 한 뒤, 동료의 push 를 보호하면서 원격에 반영하는 명령을 쓰세요.

bash
git push --force-with-lease origin <브랜치>

--force 를 쓰면 내가 모르는 사이 추가된 커밋까지 덮어쓸 위험이 있습니다.