Git & Github

  • Hugo 블로그를 작성하면서 PaperMod 테마를 사용하고 있습니다.
  • 블로그를 사용하던 중 pull request를 만들고자 하던 중.. 문제가 생겼습니다.
    1. 원본 repository를 fork하여 저만의 PaperMod repository를 만들었습니다.
    2. (아무런 생각없이) 저만의 블로그로 수정에 수정을 거듭하며 master branch에 commit이 쌓여갑니다.
    3. pull request 버튼을 누르니.. 지금까지 commit한 모든 내용이 pull request에 포함됩니다.
    4. 원하는 commit message만 pull request하는 방법을 찾아보았지만.. 처음부터 branch를 나누고, 작업을 진행했어야 합니다.
  • 눈물을 머금고.. upstream branch로부터 local branch를 생성하고 pull request 하는 방법을 공부합니다.

Git remote 연결

  • remote 연결은 두 가지(origin/upstream)가 필요합니다.
    • origin: forked repository
    • upstream: original repository
1
2
git remote add origin https://github.com/pacientes/hugo-PaperMod
git remote add upstream https://github.com/adityatelange/hugo-PaperMod

Git origin repository 내용 복사

  • Git에 올라가있는 내용물을 받습니다.
  • git pull remote branch 순서로 작성합니다.
1
git pull origin master

Git upstream 최신 내용 반영

  • 원본(upstream) branch 내용물이 upstream/master에 동기화됩니다.
  • 최신 버전의 upstream branch를 다운로드 하고 본인의 repository에 반영합니다.
1
git fetch upstream

Git local branch 생성

  • 개발중인 기능이나, 실험적인 내용은 branch를 만들어 분리하는 것이 좋습니다.
  • branch 생성은 git checkout -b <branch_name> <target_branch>로 작성합니다.
1
2
3
4
5
git checkout -b sample master

# 또는...

git checkout -b sample upstream/master

Git 원하는 commit만 반영하기

  • commit message는 작은 변경점 단위로 쪼개는 것이 좋습니다.
  • 그래야 실수했을 경우 부분적으로 돌아갈 수 있기 때문입니다.
  • cherry-pick 기능을 사용하여 원하는 commit 내용을 반영합니다.
1
git cherry-pick <commit id>

이후..

  • upstream branch로부터 깨끗한 local branch를 만들 수 있습니다.
  • local branch에 원하는 commit을 적용하거나, 직접 수정 후 commit & push 하여 git에 반영합니다.
  • 특정 branch의 commit을 가지고 pull request를 요청합니다.