Forked Repo
一般地,本地 forked repo 有两个远端:
-
upstream
指向原作者的 repo -
origin
指向 forked repo
更新方法
# 切换到 master 分支
git checkout master
# 拉取原作者的 repo
git pull upstream master:master
# 更新 forked repo
git push origin master:master
# 更新 forked repo 的远端分支
git remote update --prune
Pull Request 追踪特性
pull request 会追踪发起它的远端分支(简称 PR 分支,本地副本被称为“本地PR 分支”),除非已被 merge 或者处于 close 状态。
- 如果 pull request 被 merge,PR 分支可以被原作者删除。
- 如果 pull request 被 close,PR 分支可以被原作者删除。一旦删除,该 pull request 就不能再被 reopen。
预览 Pull Request 合并后的状态
首先,更新 repo。
其次,搭建预览现场。此时完全不用担心 conflict(除非 GitHub 网页已经指出)。
git checkout -b [预览分支]
git pull [发起 repo 的 URL] [发起分支]
然后,预览(一般是测试)。
最后,清理预览现场。
git checkout master
git branch -D [预览分支]
解决 Pull Request 冲突
GitHub 的 pull request 页面指出 PR 冲突,可用下列方法解决:
首先,更新 repo。
然后,将 master 分支合并到本地 PR 分支。此时必然发生 conflict,解决并新建 commit。建议使用 GitHub Desktop 或 IDE 来执行该步骤。
最后,push 本地 PR 发起分支。
此时,GitHub 上的 pull request 会追加 commit,并指出冲突已消除。
Pull Request 与 Issue
GitHub 中 pull request 和 issue 共用一套编号。可在页面末尾添加的 comment,称为 issue comment。相关的 API 都在这里。
如果 commit message 包含fix / fixes / fixed / close / closes / closed / resolve / resolves / resolved
等关键字加上#编号
,一旦 commit 被加入 repo,相应的 issue 就会被 close。