GitHub 代码贡献完整流程详解:从 Fork 到 Pull Request 教程

 

GitHub,作为目前最大的 Git 托管平台

选择将你的 Git 项目托管到一个外部专业的托管网站。 这带来了一些好处:一个托管网站可以用来快速建立并开始项目,且无需进行服务器维护和监控工作。 即使你在内部设立并且运行了自己的服务器,你仍然可以把你的开源代码托管在公共托管网站——这通常更有助于开源社区来发现和帮助你。

对于公司而言,一般的小公司,直接使用公开的服务就是最好的,可以直接使用Github项目。对于大公司为了基本的安全,一般会选择自己搭建GitLab 来给自己的程序员使用。

GitHub 代码贡献流程

GitHub 设计了一个以拉取请求为中心的特殊合作流程。 它基于我们在 主题分支Git 分支 中提到的工作流程。 不管你是在一个紧密的团队中使用单独的版本库,或者使用许多的“Fork”来为一个由陌生人组成的国际企业或网络做出贡献,这种合作流程都能应付。

流程通常如下:

  1. 派生Fork一个项目
  2. master 分支创建一个新分支
  3. 提交一些修改来改进项目
  4. 将这个分支推送到 GitHub 上
  5. 创建一个拉取请求
  6. 讨论,根据实际情况继续修改
  7. 项目的拥有者合并或关闭你的拉取请求
  8. 将更新后的 master 分支同步到你的派生中

我们创建一个新的账号,来模拟贡献者

第一步:派生一个项目,找到需要贡献参与的仓库,单击“Fork”按钮来获得这个项目的副本。

打开你想贡献参与的项目,点击Fork

回到自己的仓库,仓库Clone 到本地


第二步:克隆项目,创建下一个新分支,修改代码,推送项目

$git clone [email protected]:Jfef/Github.git
Cloning into 'correct-close-socket'...
remote: Enumerating objects: 17, done.
remote: Counting objects: 100% (17/17), done.
remote: Compressing objects: 100% (17/17), done.
remote: Total 17 (delta 4), reused 4 (delta 0), pack-reused 0
Receiving objects: 100% (17/17), 11.59 KiB | 3.86 MiB/s, done.
Resolving deltas: 100% (4/4), done.
$git checkout -b addcodefeature
Switched to a new branch 'addcodefeature'
$ touch A.c
$ echo "this is new A.c" > A.c
$ cat A.c
this is new A.c
$git add A.c
warning: in the working copy of 'A.c', LF will be replaced by CRLF the next time Git touches it
git commit
[addcodefeature 53a78cd] Add new file A.c
1 file changed, 1 insertion(+)
create mode 100644 A.c
$ git push --set-upstream origin addcodefeature
Enumerating objects: 4, done.
Counting objects: 100% (4/4), done.
Delta compression using up to 12 threads
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 333 bytes | 333.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
remote:
remote: Create a pull request for 'addcodefeature' on GitHub by visiting:
remote:     https://github.com/Jfef/my_porject2/pull/new/addcodefeature
remote:
To https://github.com/Jfef/my_porject2.git
* [new branch]     addcodefeature -> addcodefeature
branch 'addcodefeature' set up to track 'origin/addcodefeature'.

此时重新打开项目会发现,新增了分支


创建拉去请求


切换到项目维护者身份,可以看到来自某一个用户的pull request (邮件通知和web的消息通知都会告知)



打开后,可以打开file change 这一栏,看看具体修改了什么,作出评论,回到回话章节,也可以看到具体品论。

每个人都能在拉取请求中发表评论。在 拉取请求讨论页面 里我们可以看到项目拥有者对某行代码发表评论, 并在讨论区留下了一个普通评论。你可以看到被评论的代码也会在互动中显示出来。

假设贡献者和项目拥有者进行了讨论,指出问题,此后,贡献者可以重新提交这个分支

修改代码,重新提交

echo "add new file A.c"> A.c
root@osboxes:/home/user/Github# git commit -am "Add A.c"
[addcodefeature be42042] Add A.c
1 file changed, 1 insertion(+)
root@osboxes:/home/user/Github# git push
Counting objects: 3, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 280 bytes | 280.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To github.com:neonmike/Github.git
  5fce5b5..be42042 addcodefeature -> addcodefeature

提交后,此时对话方面,会自动展示出修改情况。此时贡献者可以告知自己的修改情况,给出通知。


代码拥有者和贡献者经过讨论和重新修改等。如果觉得没有问题,可以将代码进行融合。给出结论,关闭回话。


整个过程每一步都是有邮件纪录和通知,保证沟通的顺利。


发表评论

后一页 前一页