Open yuqingc opened 4 years ago
下面以 tt-up/fed-in-depth 为例,来教你如何创建第一个 PR。改方法适用于 GitHub 的任何开源项目。一起来学习一下吧。
$ git clone git@github.com:tt-up/fed-in-depth.git
熟悉使用 GitLab 工作的同学可能习惯于在公共 repo 直接创建一个分支(branch),然后直接使用这个分支发起一个 “Merge Request” 以将自己的分支合并到其他分支,比如 master 分支。这种方法同样可以在 GitHub 上使用,但是咱们不推荐这么做。因为 GitHub 上的开源项目往往是有很多来自世界各地的开发者一起合作开发的,如果每个开发者都有权限在 GitHub 的项目主仓库(主仓库,指的是项目的原始仓库,和后文的 fork 仓库区分开),那么久而久之,主仓库就会有成千上万的分支,非常不容易维护。因此,我们常常需要把主仓库拷贝一份到自己的名下,这样,咱们自己就可以在自己复制过来的仓库随意倒腾啦,包括创建新的分支。等我们在自己拷贝过来的这个的仓库创建新的分支后,我们就可以用自己的分支向主仓库的分支发起 PR 啦。这个“拷贝”的动作,我们叫做“Fork”。
进入你向参与贡献的开源项目主页,点击 Fork 按钮。我们仍然以咱们的 tt-up/fed-in-depth 为例
Fork
选择需要 Fork 的目标地址。点击 Fork 之后,GitHub 会弹出对话框让你选择需要 Fork 的目标。因为有些用户会属于其他组织,所以你可以在弹窗中选择目标地址。一般情况下,选择自己就可以了。
Fork 完成之后,会自动跳转到复制过后的项目主页,从标题或者地址可以看出,这个项目目前已经在你的名下。因为它在你的名下,所以你拥有对这个 Fork 仓库的所有权限,如 push 等。
origin
$ git remote -v origin git@github.com:tt-up/fed-in-depth.git (fetch) origin git@github.com:tt-up/fed-in-depth.git (push)
$ git remote add yuqingc git@github.com:yuqingc/fed-in-depth.git
注意:origin 和 yuqingc 分别的主仓库和 Fork 仓库的别名。你可以起自己喜欢的名字。比如如果你要命名 Fork 仓库为 fork,则上面的命令需替换为 git remote add fork 【远程Fork仓库地址】
yuqingc
fork
git remote add fork 【远程Fork仓库地址】
此时再查看远程仓库别名可以看到刚刚添加的 yuqingc
$ git remote -v origin git@github.com:tt-up/fed-in-depth.git (fetch) origin git@github.com:tt-up/fed-in-depth.git (push) yuqingc git@github.com:yuqingc/fed-in-depth.git (fetch) yuqingc git@github.com:yuqingc/fed-in-depth.git (push)
注意:如果你是直接从 Fork 仓库克隆到本地,那么 origin 别名会默认指向 Fork 仓库,此时你需要添加主仓库别名。比如我要把主仓库添加别名为 upstream,则需要使用命令 git remote add upstream 【远程主仓库地址】。一定要注意区分。后文将会用 fork 和 origin 分别表示 Fork 仓库和主仓库的远程仓库别名。
upstream
git remote add upstream 【远程主仓库地址】
如果我要基于主仓库的 master 开发一个功能,可以基于主仓库的 master 分支新建一个分支并且将这个分支 push 到 Fork 仓库。
$ git fetch origin $ git checkout -b my-feature-branch origin/master
注意,这里的 origin 指的是主仓库别名,你需要根据自己的主仓库别名来替换。
开发完成之后就可以 push 到自己的 Fork 仓库了
$ git push -u fork my-feature-branch
注意,这里的 fork 指的是 Fork 仓库别名,你需要根据自己的 Fork 仓库别名来替换。
进入 GitHub 你的 Fork 仓库或者主仓库主页,点击 Pull Request,并点击 New Pull Request
Pull Request
New Pull Request
当 GitHub 检测到有新的分支时候,也会自动出现提示你发 PR 的按钮
确认你的分支和需要合并的目标分支,点击 Create pull request 即可
Create pull request
创建完成之后,快喊你的小伙伴来给你 Review 代码吧!
注意:一般情况下,你的 PR 被 merge 之后,你的分支就可以删除了。如果要提新的功能,建议重新拉分支提交。因为很多情况下,Repo 的维护者会把你的 PR 的好几个 Commit 压缩成一个,我们成为 Squash,这样你的分支的 commit 历史就和主仓库的不同了。如果你在原有的分支继续开发,并且发新的 PR 的话,就会导致你的内容和远程的内容存在冲突。如果没看懂没关系,记住,新的 PR 就拉新的分支就好了。
下面以 tt-up/fed-in-depth 为例,来教你如何创建第一个 PR。改方法适用于 GitHub 的任何开源项目。一起来学习一下吧。
1. Clone 主仓库
进入项目的主页,复制项目的地址
执行命令复制到本地
2. Fork
Why Fork?
熟悉使用 GitLab 工作的同学可能习惯于在公共 repo 直接创建一个分支(branch),然后直接使用这个分支发起一个 “Merge Request” 以将自己的分支合并到其他分支,比如 master 分支。这种方法同样可以在 GitHub 上使用,但是咱们不推荐这么做。因为 GitHub 上的开源项目往往是有很多来自世界各地的开发者一起合作开发的,如果每个开发者都有权限在 GitHub 的项目主仓库(主仓库,指的是项目的原始仓库,和后文的 fork 仓库区分开),那么久而久之,主仓库就会有成千上万的分支,非常不容易维护。因此,我们常常需要把主仓库拷贝一份到自己的名下,这样,咱们自己就可以在自己复制过来的仓库随意倒腾啦,包括创建新的分支。等我们在自己拷贝过来的这个的仓库创建新的分支后,我们就可以用自己的分支向主仓库的分支发起 PR 啦。这个“拷贝”的动作,我们叫做“Fork”。
如何 Fork?
进入你向参与贡献的开源项目主页,点击
Fork
按钮。我们仍然以咱们的 tt-up/fed-in-depth 为例选择需要 Fork 的目标地址。点击
Fork
之后,GitHub 会弹出对话框让你选择需要 Fork 的目标。因为有些用户会属于其他组织,所以你可以在弹窗中选择目标地址。一般情况下,选择自己就可以了。Fork 完成之后,会自动跳转到复制过后的项目主页,从标题或者地址可以看出,这个项目目前已经在你的名下。因为它在你的名下,所以你拥有对这个 Fork 仓库的所有权限,如 push 等。
3. 配置本地的远程仓库别名
origin
指向了主仓库此时再查看远程仓库别名可以看到刚刚添加的
yuqingc
注意:如果你是直接从 Fork 仓库克隆到本地,那么
origin
别名会默认指向 Fork 仓库,此时你需要添加主仓库别名。比如我要把主仓库添加别名为upstream
,则需要使用命令git remote add upstream 【远程主仓库地址】
。一定要注意区分。后文将会用fork
和origin
分别表示 Fork 仓库和主仓库的远程仓库别名。4. 在新的分支进行开发
如果我要基于主仓库的 master 开发一个功能,可以基于主仓库的 master 分支新建一个分支并且将这个分支 push 到 Fork 仓库。
注意,这里的 origin 指的是主仓库别名,你需要根据自己的主仓库别名来替换。
开发完成之后就可以 push 到自己的 Fork 仓库了
注意,这里的 fork 指的是 Fork 仓库别名,你需要根据自己的 Fork 仓库别名来替换。
5. 创建新的 PR
进入 GitHub 你的 Fork 仓库或者主仓库主页,点击
Pull Request
,并点击New Pull Request
当 GitHub 检测到有新的分支时候,也会自动出现提示你发 PR 的按钮
确认你的分支和需要合并的目标分支,点击
Create pull request
即可创建完成之后,快喊你的小伙伴来给你 Review 代码吧!
完(欢迎补充)