Git 基础学习系列

Github 的利用

Github feature 官宣,介绍了 Github 的主要特性。

详细演示下怎么给一个项目发起 Pull Request(PR)

  • 第一步,找到你想发起 PR 的项目,点击右上角的 Fork 按钮,然后该项目就出现在了你自己账号的 Repository 里。
  • 第二步,把fork的项目 clone 到本地,然后修改的 bug 也好,想要新增的功能也好,总之把自己做的代码改动开发完,接着,把自己做的代码改动 push 到 你自己的 GitHub 上去。
  • 第三步,点击你 Fork 过来的项目主页的 Pull requests 页面,点击右上角的New pull request。

页面自动会比较该项目与原有项目的不同之处,最顶部声明了是源仓库的分支与你fork过来的分支的对比。同样的我写好标题和描述,然后我们点击中间的 Create pull request 按钮,至此我们就成功给该项目提交了一个 PR。

然后就等着项目原作者 review 你的代码,并且决定会不会接受你的 PR,如果接受,那么恭喜你,你已经是该项目的贡献者之一了。

发现好用的开源项目

GitHub 其中一个最重要的作用就是发现全世界最优秀的开源项目,你没事的时候刷刷微博、知乎,人家没事的时候刷刷 GitHub ,看看最近有哪些流行的项目,久而久之,这差距就越来越大,那么如何发现优秀的开源项目呢?

  1. 关注一些活跃的大牛
  2. Explore菜单下的Trending,看到最近的一些热门开源项目,很多人主动获取开源项目的最好的途径,可以选择“当天热门”,“一周之内热门”和“一月之内热门”来查看,并且,可以分语言来查看。
  3. Search,按照Most Stars来筛选。

GitHub 的 Search 还有一些小技巧:

  • 使用高级搜索的功能,搜索语法见 Understanding the search syntax
  • 使用 in:readme 可以扩大搜索的范围,否则直接输入输入搜索文字,只在仓库名、描述的内容中去匹配搜索;

搜索词示例:

git 最好 学习 资料 in:readme stars:>2000
# 搜仓库里带有 gitlab-ci.yml 的仓库,同时文件里有 after_script + stge:deploy 内容,根据代码内容搜索
'after_script'+'stage: deploy' filename:.gitlab-ci.yml

除此之外,有些人如果习惯用 Google 进行搜索,那么想搜索 GitHub 上的结果,不妨前面加 GitHub 关键字就ok了,比如我在 google 里输入 GitHub android http ,每个关键字用空格隔开。

怎么选择团队适合的工作流

主干开发



Facebook 采用主干开发模式。如果没有质量保证的话,commit 容易出现错误,要能快速迭代,才能采用主干开发模式。

Git Flow

流程太过复杂,互联公司不太常见,和主干开发模式不同,它类似于特性分支模式。



Github Flow:

特性分支开发测试完毕,回合到主干,既可以立即发布了

Gitlab Flow 带生产分支

master 分支用于持续集成的,特性分支会集成到 master,production 分支用于发布的。

Gitlab Flow 带环境分支:



Gitlab Flow 带发布分支:

因为硬件有多个版本,为了适配这些硬件,同一个时间点,可能会针对硬件发布多个版本

如何挑选合适的分支集成策略

Github > Insights > Network 可以看到版本演进;

Settings 中,有一个 Merge Button,可以选择 MR 的方式:



Github 的合并策略:

  • allow merge commits:合入主干时,会产生一个 merge commit;
  • allow squash merging:相当于把你的提交会先合并成一个 commit,然后再提交,这样的话,你原来的特性分支没有变,主干分支多了一个 commit,主干也是线性演进;
  • allow rebase merging:主干是一个线性演进,看着很舒服,实质上就是特性分支的一个个 cherry pick 到主干上,比如特性分支上有3个 commit,那么执行之后,主干也就产生3个 commit 了,原特性分支没有变化;



    上面,仅仅是 Github 的 MR 策略,与 Gitlab 的策略也是有所区别的。

启用 issue 跟踪需求和任务

仓库的 settings 页面,有启用 issue 的按钮,默认是勾选的,可以 set up template,可以选择预设的模板。模板文件是放在仓库的 .github 文件夹中,可以参考 vue 项目的模板

如何用 project 管理 issue?

在仓库的 projects 页面可以创建 project,也是有 template 的。以后添加 issue 时,就可以选择对应的 project。

晨会过进度的时候,还是很方便直观的。后期可以通过项目看板帮我们有序的管理任务和推进。

项目团队怎么实施 code review?

在仓库 settings branches 中添加规则,支持 release* 这样的规则,通配符,还可以指定 review 的其他规则,比如审核人要几个等。

通过 pull request 发起 review 的申请。

福利

GitHub 上影响力很大,同时又对你们很有用的项目:

  • free-programming-books: 这个项目整理了所有跟编程相关的免费书籍,而且全球多国语言版的都有,中文版的在这里 free-programming-books-zh
  • ob-my-zsh: 俗话说,不会用 shell 的程序员不是真正的程序员。oh-my-zsh 毫无疑问就是目前最流行,最酷炫的 shell
  • zsh+on-my-zsh配置教程指南(程序员必备)
  • awesome: GitHub 上有各种 awesome 系列,简单来说就是这个系列搜罗整理了 GitHub 上各领域的资源大汇总,比如有 awesome-android, awesome-ios, awesome-java, awesome-python 等等等,就不截图了,你们自行去感受。
  • github-cheat-sheet: GitHub 的使用有各种技巧,只不过基本的就够我们用了,但是如果你对 GitHub 超级感兴趣,想更多的了解 GitHub 的使用技巧,那么这个项目就刚好是你需要的,每个 GitHub 粉都应该知道这个项目。
  • LearningNotes:这是一份非常详细的面试资料,涉及 Android、Java、设计模式、算法等等等,你能想到的,你不能想到的基本都包含了,可以说是适应于任何准备面试的 Android 开发者,看完这个之后别说你还不知道怎么面试!

补充-Gitlab

Git基础 —— Github 的使用的更多相关文章

  1. Git 基础 —— 常见使用场景

    Git 基础学习系列 Git 基础 -- 安装 配置 别名 对象 Git 基础 -- 常用命令 Git 基础 -- 常见使用场景 Git基础 -- Github 的使用 突然插入 Bugifx 工作, ...

  2. Git 基础 —— 常用命令

    Git 基础学习系列 Git 基础 -- 安装 配置 别名 对象 Git 基础 -- 常用命令 Git 基础 -- 常见使用场景 Git基础 -- Github 的使用 git init 创建 Git ...

  3. Git 基础 —— 安装 配置 别名 对象

    Git 基础学习系列 Git 基础 -- 安装 配置 别名 对象 Git 基础 -- 常用命令 Git 基础 -- 常见使用场景 Git基础 -- Github 的使用 Git 安装 Git下载地址 ...

  4. 适合小白/外行的git与github最基础最浅显教程

    首先声明,这是适合小白/外行/初学者/学生看的最基础最简单的git与github教程,已经能使用svn,git等工具的朋友请不要看这篇文章来浪费时间了. 想进一步学习git的,推荐去廖雪峰博客学习. ...

  5. GitHub & Git 基础 (YouTube中文翻译版)

    GitHub & Git 基础系列视频 播放列表 由于视频资源在YouTube上,可能需要FQ:https://code.google.com/p/chromeplus/ 视频包括以下内容 1 ...

  6. [gitHub实践] git基础:远程仓库的使用

    [gitHub实践] git基础:远程仓库的使用 版权2019.6.2更新 git 基础 远程仓库的使用 git remote # 查看远程仓库 $ git remote # 克隆的仓库服务器默认名字 ...

  7. 使用git和github管理自己的项目---基础操作学习[转]

    原文: https://segmentfault.com/a/1190000003728094 我是通过看廖雪峰的git教程学习的,真的是极好的,以下是我学习过程中的总结,记录下来,方便自己参考以熟悉 ...

  8. git与github使用

    Git和Github简单教程 目录: 零.Git是什么 一.Git的主要功能:版本控制 二.概览 三.Git for Windows软件安装 四.本地Git的使用 五.Github与Git的关联 六. ...

  9. Git和Github简单教程

    原文链接:Git和Github简单教程 网络上关于Git和GitHub的教程不少,但是这些教程有的命令太少不够用,有的命令太多,使得初期学习的时候需要额外花不少时间在一些当前用不到的命令上. 这篇文章 ...

随机推荐

  1. Thymeleaf模板引擎的初步使用

    在springboot中,推荐使用的模板引擎是Thymeleaf模板引擎,它提供了完美的Spring MVC的支持.下面就简单的介绍一下Thymeleaf模板引擎的使用. 在controller层中, ...

  2. java数据库三大范式

    引用知乎网友@ 王红波的回答 一范式就是属性不可分割.属性是什么?就是表中的字段.不可分割的意思就按字面理解就是最小单位,不能再分成更小单位了.这个字段只能是一个值,不能被拆分成多个字段,否则的话,它 ...

  3. oracle(二)V$lock 视图中ID1 , ID2 列的含义

    1.在Table Locks(TM)中 ID1为对象的id, ID2为0 在Row Locks(TX)中 ID1为Undo Segmen Number与该事务在该回滚段的事务表(Transaction ...

  4. 第四课:通过配置文件获取对象(Spring框架中的IOC和DI的底层就是基于这样的机制)

    首先在D盘创建一个文件hero.txt,内容为:com.hero.Hero(此处必须是Hero的完整路径) 接下来是Hero类 package com.hero; public class Hero ...

  5. 007-spring cloud gateway-GatewayAutoConfiguration核心配置-RouteDefinition初始化加载

    一.RouteDefinitionLocator 在Spring-Cloud-Gateway的GatewayAutoConfiguration初始化加载中会加载RouteDefinitionLocat ...

  6. 使用pssh进行并行批量操作

    假如同时给上千台服务器执行一个命令,拷贝一个文件,杀一个进程等,有什么简化运维管理的工具呢?在小型使用中我都是使用for循 环,数量巨大,一方面不确定操作是否成功,一方面for循环语句性能不好估计且是 ...

  7. window7 触屏操作相关

    一.体系概述 1.Windows Touch Input 和 Gestures消息 Windows Touch消息特性 通过在执行期间的监听和解释来使能.下面的示例展示了Windows7 上消息是怎么 ...

  8. 【SVM】A Practical Guide to Support Vector Classi cation

    零.简介 一般认为,SVM比神经网络要简单. 优化目标:

  9. linq to sql 左联接出错,未将对象引用设置到实例

    var result = from a in model join b in orderDetailModel on a.FoodMenuID equals b.FoodMenuID into g f ...

  10. linux 引导流程二

    grep -v  “^#” /etc/inittab | more 提取etc文件中的有效行. 用命令man 可以获得配置文件和命令的帮助信息.配置文件必须是系统的配置文件或系统默认安装的某个服务的配 ...