远程协作尝试,Github远程协作入门基础知识_github指南攻略

远程协作是一个听起来很酷的词,就像谈恋爱一样,听起来总是觉得它和浪漫一词相关,但实际进行起来却由于各种原因感觉不是那么浪漫。那么,我们这次就来分享一下远程协作过程中的浪漫和苦闷,以及我们在两者之间的取舍。远程协作,我们也把它叫做“云办公”,好处是自然可以想象:节省办公室租金( HR 曾好几次跟我说公司办公室位置不够了,把我从这个地方赶到那个地方。)工作环境自

远程协作尝试,Github远程协作入门基础知识

远程协作是一个听起来很酷的词,就像谈恋爱一样,听起来总是觉得它和浪漫一词相关,但实际进行起来却由于各种原因感觉不是那么浪漫。那么,我们这次就来分享一下远程协作过程中的浪漫和苦闷,以及我们在两者之间的取舍。

远程协作尝试,Github远程协作入门基础知识_github指南攻略

远程协作,我们也把它叫做“云办公”,好处是自然可以想象:

节省办公室租金( HR 曾好几次跟我说公司办公室位置不够了,把我从这个地方赶到那个地方。)

工作环境自由/高效/免打扰(云办公的含义是,你可以选择任何地点进行办公,不一定是要在家里,可以在办公室,也可以是咖啡厅甚至酒吧,去此时此刻任何让你感觉到舒服的地方,只是无论你去哪里,你的同伴都很可能还和你保持“远程协作”。)

节省路途时间,可以拿来工作,也可以拿来陪家人(我们组有一个同事就是因为家里太远了,每天可以节省 3 小时来回时间,在家办公更适合他)

更有可能招到更好的人才(有不少人才因为地域的限制而被放弃,这是非常可惜的。我们的设计师就是因为在杭州,不需要到上海来才加入。)

那么,在这些“诱惑”之下,我们是如何在工作中保持持续的跟踪和反馈的呢?我们使用了一些很酷的在线工具!

我 们团队麻雀虽小但五脏俱全,全端工程师、设计师和产品经理全部齐全。因此,在做一款基于 Web 的产品方面是一个比较齐全的组合,不需要借助多少外界,四个人凑合在一起,除了干活就是沟通。各自隔离开来,是为了干活更高效,沟通也是为了干活更高效, 只是殊途同归。沟通和隔离,本来是相互矛盾的,只是借助在线工具之后,两者的矛盾程度降低了,在某些方面反而相互促进了(比如在需要用文字表达的时候,相 互隔离又保持一起在线可能会更高效,更容易让大家专心思考并无障碍的表达自己的观点)。

首先,前期需求的沟通。 我们花了大量的时间(大概两三天)来寻找一款好的远程语音或者视频通话工具,最好是兼具屏幕共享的。体验过太多类似产品,以至于我们发现很多该领域的创业 公司。网络带宽条件越来越好,移动端的兴起,以及浏览器技术越来越先进,导致该领域涌现大量的创业公司,比如最近被 Slack 收购的 Screenhero,远程视频会议领域之王 WebEx 出的新产品 Cisco Spark 等等。最后,我们选择了 Skype,它在语音通信质量方面胜过其它国外的同类创业公司。我们另一个远程团队使用的是 QQ 语音,效果也不错,只是我们一开始没有尝试。该领域的其它产品包括 sqwiggle、Room、Moxtra、Talky 和Kato。

其次,需求文档的撰写和矫正讨论。 文档共享方面我们有很多方式,因此也有很多选择。比如,你可以以文件的形式共享在 Dropbox 上,也可以提交到 Github 上,当然 Google Docs 的形式最好,可以共享编辑和添加注释,只可惜被墙了。最后我们选择了没有被墙,在产品体验上也更好的 Quip,这是 Facebook 前 CTO 创业做的一款产品。这款产品一改古老的 Docs 风格,不以分页的形式展示文档内容,在编辑和在线沟通等体验上都好过其它产品,是我们的最佳选择。国内的同类产品叫石墨。

再次,设计稿的共享。设计稿的共享也有很多形式,最简单的就是使用 Dropbox 这种工具来同步,也可以发到 Slack 上去。我们使用了在线白板系统 Frontify,可以在线对共享稿的细节进行勾画和讨论。

然后,项目管理。Trello 无疑是整个项目管理的中心,产品的规划、任务的分配,都在 Trello 中记录。只可惜我们团队的开发不是很规范,产生的内容没有多到任何细节都覆盖,因此在 Trello 上只是零散的记录一些关键功能的开发,以及视觉走查和功能走查的 Bug。为了保持 Trello 的整洁而不会杂乱无章,我们把设计稿和需求文档的讨论放在别的更专业的工具上(Quip 和 Frontify),只在 Trello 上贴这些相应资源的链接。使用 Trello 管理的重点不在于添加内容并消灭,而在于分解工作、约定规则和常规工作流程,并严格执行。在这方面 UserVoice 有一篇文章值得参考 How We Use Trello & Google Docs to Make UserVoice Better Every Day: http://community.uservoice.com/blog/trello-google-docs-product-management/

最后,琐碎沟通。 就像七牛早期只使用 Gtalk 进行沟通一样,Slack 取代了 QQ 成为我们最常用的沟通工具。我们作为小团队,在工具选择方面达成一致的代价非常小,并且 Slack 相比 QQ 具有非常明显的优势,比如我们记录了从项目开始到现在为止完整的沟通过程,所有的吵架记录都在。我们使用远程协作,大家在物理上都相互隔离了,它最大的优 势在于不轻易去打扰别人。Slack 作为通知中心在跟踪队友进度方面起到了非常大的作用,这种跟踪是以跟踪者选择性的收取相关信息来进行的,而不是一问一答的形式。我们用 Slack 来收取 Github 的提及记录信息,使用 Slack 来收取 Frontify 上设计稿的更新记录,收集 Trello 上的项目进度信息。

以上,是我们在远程沟通过程中使用的工具,看起来很酷,但如果一个产品的打造过程只由这些冷冰冰的工具组成,那团队不一定能够走到现在,或许早已经解散。

远 程工作的终极理想是解放每个人的生产力,让每个人可以在适合自己的情感和现实状态下尽可能发挥自己的才能完成极其专业性的工作,不必困于一处。但这毕竟只 是理想。团队之所以称为团队,是因为大家习惯了在一起。我们之所以使用这么多协作工具,是因为大家希望保持沟通。对于聚集在办公室的团队来说,这是天然的 优势,他们可以在不满的时候朝对方一笑继续接受之前不满的事实继续干活,而不是不断的沉默让你问一句答一句,抽一鞭走一步。事实上,我们在前期需求沟通的 时候遇到过巨大的困难。

我们遇到的第一个问题是,前期沟通频次控制不够好。 前期我们以为有 Skype 持续在线语音沟通就够了,但是后来发现这样更浪费时间,如果大家都只在自己电脑面前干坐着而没有更多想法,只会浪费时间。我们的改进方案是,各自先做相应 的思考,然后每天不定期进行简短的沟通,达成意见的统一。再后来需求沟通完成后,各自进入具体的工作,每天不定期的沟通就会对大家造成更多不良影响。于 是,我们就开始定规矩,每天早上 10 点准时开早会,时间不定,每天尽量只需要实时沟通一次(其它琐碎的事情在 Slack 上沟通)。除了早会之外,每周一 10 点准时到公司开周会。项目进行到后期,工作上的内容大多可以通过在线沟通解决,但周会的意义在于保持组员见面联络,让大家在情感上感觉到这个团队的存在和 使命。

其次,文字的沟通容易吵架。Slack 虽然有丰富的表情,但跟 QQ 和微信不一样,不太符合中国人的习惯,作为技术人员,我们在讨论工作事情时候也更习惯于用纯文字进行沟通。有时候如果多方意见不统一,就很容易造成至少两 方在玩文字或者逻辑游戏,打口水仗,情况恶劣的可能会影响大家的心情。这在专业性极强的工作内容中是没有必要存在的,我们无非是为了做一个工程做一款产 品,不是为了显示自己的智商有多高逻辑有多强。为了坚持自己的主观看法而去吵架不叫有情怀,以为对方伤了自己的自尊再去伤对方的自尊不叫出息。假如真的在 文字聊天的时候吵起来了,最有效的挽留办法不是继续为自己“辩护”,而是打开 Skype 或者电话沟通,甚至直接让大家跑到办公室统一意见。当然,这些都只是具体的操作,每个人应该在心里记住的是,我们之所以讨论不是为了吵架,不是为了秀智商 的上限或者下限,而是为了做一款更好的产品。不忘初衷,方得始终。

最后,主动和自觉非常重要。 我们说过远程协作可以不受办公室其他同事的打扰,但却免不了你自己所在环境的打扰,特别是独处的时候免不了自己内心的打扰。比如,有些人特别是 leader 可能会无形中感觉压力大,会感觉恐慌。如果是创业,可能会有意无意关注一些竞争对手,他们可能是真实的,更多情况下是假想的敌人。这时候,主动而自觉的和 队友沟通就显得非常重要。沟通形式多种多样,比如按时完成符合对方预期的工作就是一种很好的沟通,结果即为互动。再比如,工作内容之外生活内容的沟通,很 容易在远程协作团队中忽略,特别是同性之间,物理上的隔离很大情况下就意味着生活内容的隔离。我们需要背靠背的力量,来排除一切干扰,缓解各种有意无意情 况下产生的压力。

Github远程协作

网址:https://github.com/

关键功能

Gist:代码片段的托管。

News Feed:所跟随用户的最新动态。

Issues:事务管理。

Pull Requests:github主要流程。

Unwatch:接受对某个项目的通知。

Star:设置对某个项目的持续关注。

Fork:将别人的项目克隆的自己的用户名下。

Repository:仓库。

SSH:为了使用Github的远程,一般会在本地配置ssh,以避免每次对github的修改而重复的输入github用户名和密码。

sh-keygen -t rsa -C “littlejixing@163.com”(-t:指明所要创建的密钥类型,-C:添加注释)

ssh key:88888

ssh-agent -s:创建密钥管理器

ssh-add ~/.ssh/id_rsa:添加密钥进密钥管理器(这一步可能会有报错“Could not open a connection to your authentication agent”报错原理尚不清楚,如果有哪位高人知道,小弟跪求指点。stackoverflow中有相关解决方案,但试过对于我来说都不受用。我自己的解决方案是使用Git GUI生成ssh key进行提交,后续操作亦可进行)

id_rsa中的密钥至github中的ssh key,关联本地git和github账户:ssh -T git@github.com

git clone: 获取一个远程仓库。

git fetch:获取远程仓库中的所有分支和数据,但不更改本地仓库中的版本(HEAD,master)指针,如继续操作需要调整HEAD指针(git merge/git reset/git rebase)。

git push:将本地数据推送到远程数据库

git pull:相当于git fetch 和 git merge的和操作

git tag -a v0 -m “tag for v0″:创建了一个tag,但是git push无法将tag推送到远端服务器。

git push –tags:向远端服务器推送tags

git branch -d [分支名]:删除分支

git push –deleted origin [分支名]:删除远程仓库中的分支

git push origin :[分支名]:使用一个空的分支替代远程仓库中的某分支=删除该分支。

吐槽一下吧,在windows系统下用运行git bash真的有好多bug,先说两个如果有同道中人遇到会解决的烦请告知于我,不胜感激。

命令行运行过多后,会出现结果无法显示的情况,需要执行clear清屏后才会恢复正常。

当一条单行信息过长而无法显示完全,将会出现输入异常bug。

pull request流程(github远程协作的关键流程)

fork操作:用户a觉得用户b的仓库A不错,同fork可以将仓库A的当前版本到用户a的名下。

git clone:用户a将fork至自己名下的仓库a下载至本地。

git push:用户a对仓库A进行若干修改和完善的操作后,提交至自己的远程仓库。

pull request操作:首先进行自主的差异比较,然后create pull request将自己的修改发送给用户b。

merge pull request:如果用户b觉得用户a提交的pull request没有问题,则可进行提交。

用户b如果有异议也可留言告知用户a。

获取所fork的远程仓库的最新版本

git remote add [所fork的远程仓库别名] [所fork的远程仓库地址]

origin 自己账户的远程仓库(有push权限)

所fork的远程仓库 (无push权限)

海计划公众号
(0)
上一篇 2020/04/06 04:09
下一篇 2020/04/06 04:09

您可能感兴趣的内容

  • 如何选择异步Web Python框架基础知识_Python入门教程

    Python在3.4引入了 asyncio 库,3.6新增了关键字 async 和 await ,此后,异步框架迅速发展了起来,性能上能和Node.js比肩,除非是CPU密集型任务,否则没有理由不适用异步框架。如果你是Web开发者,现在异步Web框架上有了更多选择!1、TornadoTornado 根本不是什么新框架,它最初是由FriendFeed(后被Fa

    2020/03/22
  • 站长素材小白入门_一家大型综合设计类素材网站

    站长素材小白入门 官方网址:http://sc.chinaz.com/ 简介描述:一家大型综合设计类素材网站 站长素材是一家大型综合设计类素材网站,提供高清图片素材、PSD素材、P…

    2020/03/06
  • Vue.js实现tab切换效果小白知识_效果小白攻略

    利用Vue实现简易tab切换效果1.1 在我们平时浏览网站的时候,经常看到的特效有图片轮播、导航子菜单的隐藏、tab标签的切换等等。这段时间学习了vue后,开始要写出一些简单的特效。1.2 实现思路是点击上方的标题,下方的内容随之发生改变,上方和下方用的是两个块,是兄弟节点,所以需要点击tab标题和下方内容一一对应,基予两个模块若下标相同是一个内容实现的。1

    2020/03/29
  • 大话爬虫的实践技巧小白教程_爬虫入门百科

    图1-意淫爬虫与反爬虫间的对决数据的重要性如今已然是大数据时代,数据正在驱动着业务开发,驱动着运营手段,有了数据的支撑可以对用户进行用户画像,个性化定制,数据可以指明方案设计和决策优化方向,所以互联网产品的开发都是离不开对数据的收集和分析,数据收集的一种是方式是通过上报API进行自身平台用户交互情况的捕获,还有一种手段是通过开发爬虫程序,爬取竞品平台的数据,

    2020/04/05
  • js 的隐式转换与显式转换指南攻略_类型基础入门

    隐式转换1.undefined与null相等,但不恒等(===)2.一个是number一个是string时,会尝试将string转换为number3.隐式转换将boolean转换为number,0或14.隐式转换将Object转换成number或string,取决于另外一个对比量的类型5.对于0、空字符串的判断,建议使用 “===” 。6.“==”会对不同类

    Web前端 2020/03/29
  • video.js切换视频源问题小白攻略_视频指南教程

    什么要再重新load一下什么替换一下src,没有啥作用,简单粗暴又有效的方法两个重要点一,video的问题,单单替换source的src是不行的,简单明了重新替换整个video标签,将video用js重新替换一遍,更改src二,video.js插件的问题,var myPlayer = videojs(‘my-video‘,{}
    myPlayer.src(sr

    2020/03/22
  • vue2 实现 div contenteditable=true 类似于 v-model双向数据绑定的效果使用教程_双向绑定入门基础教程

    问题在 vue2 中对表单控件有着良好的双向数据绑定机制,但是对于要特定实现某些功能的输入时,我们就不得不使用到 contenteditable=”true” 的 div ,而在这个 div 上是使用 v-model 是没有效果的。那么问题就来了,输入是非常需要双向绑定的,这里的双向数据绑定该如何实现?解决思路一:自定义指令当然,说在这一段的前面,这种解决方

    2020/04/05
  • Cf-ui使用指南Cloudflare 开发的一个 Web UI 框架。

    Cf-ui基础入门 官方网址:https://cloudflare.github.io/cf-ui/ 简介描述:Cloudflare 开发的一个 Web UI 框架。 cf-ui …

    2020/03/05
  • 凹凸实验室菜鸟知识京东用户体验设计部出品

    凹凸实验室基础入门 官方网址:https://aotu.io/ 简介描述:京东用户体验设计部出品 凹凸实验室(Aotu.io) 始建于2015年,是一个年轻基情的技术社区组织。O2…

    2020/03/05
  • iframe onload事件被block的坑入门基础教程_iframe基础知识

    写在前面最近接手了一个古旧的项目,跟客户端、服务器端一起调一个支付相关的app内嵌H5页面,这个页面有两部分组成,主页面A加上一个最终支付页面B,B页面是通过iframe嵌入到A页面中的,A、B两个页面之间的交互采用postMessage+hashChange。一般除了下载之类的需求,我很少在自己的项目中使用iframe,像这样的两个页面切换的问题,第一反应

    2020/03/26
  • react-native-chart-kit入门攻略_React Native图表工具包

    react-native-chart-kit入门攻略 官方网址:https://expo.io/@indiespirit/react-native-chart-kit GitHub…

    2020/03/10
  • 前端手写代码原理实现小白常识_原理入门基础

    前端手写代码原理实现小白常识 前言 现在的前端门槛越来越高,不再是只会写写页面那么简单。模块化、自动化、跨端开发等逐渐成为要求,但是这些都需要建立在我们牢固的基础之上。不管框架和模…

    2020/03/20
  • 微信小程序视图层处理增强之WXS小白知识_小程序使用指南

    熟悉微信小程序开发框架的开发者,肯定会对其视图层WXML中缺失的一个功能耿耿于怀,那就是没有办法在视图层对数据进行格式化处理。比如我们从后端获取到一个包含了时间戳数据的数组,然后需要在界面上把这些日期都格式化显示为2017-01-01这种格式的日期形式,在Vue, Angular之类的前端Web框架中,一般在视图层都提供了如filter之类相应比较好用的方案

    2020/04/03
  • immer.js基础教程_一个支持柯里化,仅支持同步计算的工具

    immer.js基础教程 GitHub:https://github.com/mweststrate/immer 简介描述:一个支持柯里化,仅支持同步计算的工具 Immer 就是更…

    2020/03/06
  • node-clinic小白知识_诊断Node.js 应用性能问题

    node-clinic小白知识 官方网址:https://clinicjs.org GitHub:https://github.com/nearform/node-clinic 简…

    2020/03/06
  • Redis常见数据结构入门百科_结构指南教程

    Redis的简介Redis是一个开源(BSD许可),内存存储的数据结构服务器,可用作数据库,高速缓存和消息队列代理,它支持字符串、哈希表、列表、集合、有序集合,位图,hyperloglogs等数据类型。内置复制、Lua脚本、LRU收回、事务以及不同级别磁盘持久化功能,同时通过Redis Sentinel提供高可用,通过Redis Cluster提供自动分区。

    2020/03/29