赞
踩
近日,朋友问起我来,Git 直接使用语句,或者是使用一些常用的 Git 管理工具(Github Desktop、SourceTree)如何进行代码管理,因为之前他们使用的是 Xcode 自带的 Git 管理工具。其实具体的用法很简单,和 Xcode 管理的原理是一样的。具体的大家可以参照以下三篇文章:
Git 【基于SSH协议clone GitHub远端仓库到本地】
今天要说的是一些考虑到私有仓库不随随便便被人所更改要做得一些必要操作,而这些操作一定程度上也是让我们的代码托管更加规范,方便团队开发,方便集合管理。也就是我们在提交代码时 Pull requests 操作。
或许一些项目在使用 Git 托管代码的时候只是顾及到了多个分支间的任务开发与合并,但实际上这样做我们还是在合并之后直接对合并后的项目进行了 push 操作,以至于影响到了我们远端的仓库。但是远端仓库是我们最终要上架的版本,是神圣的,这些操作应有更高级的开发组长或者部门经理去做,仅仅是一名开发人员,应该是没有这个权限去触碰远端的仓库。因此我们引入了 Pull requests 的概念。
Pull requests,理论来讲就是我们在开发时先基于原本的远端仓库进行 fork(备份一个分支,可以这样理解),得到的是一个我们自己的远端仓库(和我们 fork 的那个远端仓库内容是一致的)。然后我们在自己的远端仓库下进行代码的修改与提交,提交到的也是我们自己 fork 出来的远端仓库。然后如果确认代码完善无误,我们就可以请求开发组长去 Pull requests 你的仓库代码。这样一来是否应该拉取由开发组长决定,如果你写的代码有问题,开发组长发现了,那么他可以驳回你的 Pull requests 操作,由你修改完毕后继续提交 Pull requests 申请。
举个栗子:我们来 fork AFNetworking 的代码,并且对 AFNetworking 的代码提出修改建议。
步骤:
① fork AFNetworking 的远端仓库(直接在 Github 点击 Fork 即可)
然后我们发现在自己的仓库下有了 AFNetworking:
② 克隆我们 fork 的仓库到本地
$ git clone git@github.com:CoderZYWang/AFNetworking.git
③ 如果期间 AFNetworking 的作者有了最新的代码提交,我们如何拉取最新的 AFNetworking 远端仓库呢?(要知道,我们 fork 出来的 AFNetworking 仓库是并不会随着作者的仓库改变而改变的)
3.1 为别人的远程仓库起一个别名(upStreamForAFNetworking)
git remote add [shortname] [url]
如:$ git remote add upStreamForAFNetworking git@github.com:AFNetworking/AFNetworking.git
3.2 拉取别人远端仓库最新代码
切换到个人 fork 后的本地仓库,然后执行下列代码。(此时拉取的是 AFNetworking 原作者远端仓库下的 master 分支的最新代码)
git pull upStreamForAFNetworking master
④ 进行 Pull requests 操作,将自己 fork 的仓库代码提交到别人的远端仓库
首先确保我们的代码无误并且提交我们本地修改好的代码到我们 fork 的远端仓库,然后发出 pull request 请求。
写清楚你的修改信息,然后创建一个 pull request 即可。
这样,AFNetworking 的原作者就可以看到你提交的修改并且选择性的拉取了。
分享一篇写得非常好的文章,形象的描述了 Pull requests 的过程。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。