参考:如何优雅的在github上贡献代码

想要参与开源,很多时候不是一个人在孤立地写代码,而是在开源代码库github上面一起贡献自己地代码,贡献自己的想法,而在此之前的第一步,就是学会优雅的提交代码

比如我们要克隆 jsmini的深度克隆库

Fork项目到自己的仓库

  • 进入项目页面,点击fork,然后你的github仓库中就会出现这个项目了

fork项目

  • git clone 项目地址(可以是HTTPS形式或者是SSH形式的链接),将项目克隆到你的PC本地仓库,注意:这里的项目地址应该是你 fork 之后你仓库中的项目地址,而不是原仓库地址
git clone git@github.com:jsmini/clone.git
  • 将自己的现有仓库地址与原有的仓库地址保持同步
git remote add upstream git@github.com:jsmini/clone.git

git remote add upstream 原项目地址 ,为什么要这样呢?在多人贡献开源代码的过程中,很可能你fork之后,原项目的代码就已经更新了,导致我们提PR的时候有冲突,添加这样一个上游仓库地址,我们就可以很的使用简单的命令跟上游的仓库保持同步了。

  • 获取原仓库中最新的代码/保持跟原仓库同步
git pull upstream master

git pull upstream master 同步原仓库(upstream)中的master分支到自己的仓库

创建新分支,贡献自己的代码

多人开发贡献源代码的一个显而易见的风险就是每个人的代码质量不一,很难不保证出现bug,所以,为了项目的稳定性,现在大家常规的做法就是创建一个新的分支,在此分支上修改代码,写好测试代码,然后发起pull request(PR),经过审核,管理员通过了你的PR,将你的代码合并的master分支上,然后你的代码就真正的称为项目的一部分,成为一个开源贡献者啦。手动鼓掌.jpg

创建新分支
git checkout -b branch1

这里创建的是一个叫branch1的新分支,并从当前分支中切换到新建的分支中

分支其他操作(博主第一次操作的时候就遇到过尴尬的创建错误了分支):

git branch branchname        # 创建分支名为branchname的分支
git checkout branchname      # 切换分支到指定分支
git branch -d branchname     # 删除分支名为branchname的分支
git push origin :bbranchname # 在GitHub远程端删除一个分支
git push --delete origin branchname # 远处远程仓库分支
git branch -m oldname newname # 修改本地分支名称
提交代码
git commit -m"更改的说明"
发起Pull Request

发起PR

可能,我们在PR的时候会因为我们的代码跟要合并的分支有代码冲突,此时,我们就需要先合并代码,再修改

合并修改代码:
git checkout master # 切换到主分支
git pull upstream master # 拉取原仓库中master分支中的最新代码
git checkout branch1 # 切换回我们开发的分支
git rebase master # 将branch1分支构建在现有的master分支上
git push origin branch1 # 将代码提交到自己的远程仓库