美文网首页
后Git时代

后Git时代

作者: 1024译站 | 来源:发表于2018-02-05 15:26 被阅读17次

Git 对技术领域的重要性自不必说,它几乎重新定义了我们开发软件的方式。Git的应用范围甚至延伸到了非技术领域,比如可以用来做博客写作的版本管理。我们公司的UI设计资源都是用Git来管理的。Git的社区和生态如此繁荣,它的身影无处不在,以至于我们很难想象什么工具能替代它。那么,Git 的地位真的不可撼动吗?近日 Alex Gorischek 在 Hacker Noon上发表了他的看法。看完之后顿时觉得脑洞大开,似乎看到了未来代码版本管理和协作开发的影子。

Git 已经很好了,分布式、可离线操作、分支管理非常方便快捷。但开发人员是一个从来不满足于现状的物种,只要有改进的空间和未满足的需求,工具就会不断进化。没有什么是完美的,也没有什么是一成不变的。Git 虽然如日中天,但它的第一版发布到现在也有十几年了,比第一代 iPhone 还早两年。

当然,现在说 Git 被取代还为时尚早,至少在可见的未来它不会消亡。不过现在可以畅想下 Git 的继任者会是什么样子。

我们先来回顾下 Git 的历史。Git 跟以往的版本管理工具不一样,它的工作方式是分布式的,不依赖单独的中心服务器,每个客户端都可独立工作。这简直打开了新世界的窗口,多人协作变得更自由。但这也带来了一个问题:客户端之间的数据不同步。要知道,Git 发布的同一年,微软收购了 FolderShare,从此进入多设备共享数据的文件同步时代。一年后 Google Docs 发布,两年后 Dropbox 也发布了。Git 诞生的环境就是这样。

技术在持续演进,计算设备互联的方式发生了巨大的改变。数字通信变得更快、更丰富,也更可靠。设备不仅能独立工作,也能有效地实时协同工作。计算机之间的信息保持独立,这种想法正在慢慢消亡。至此,后 Git 时代的版本控制技术思想开始浮出水面。

展望

Git 诞生之初解决的是十多年前的问题,那对于它的继任者,我们对其有哪些期待呢?作者认为至少应该包含以下几个特性:

默认同步

Git 认为本地分支和远程分支的关联没那么重要。而且这种关联也只是一种指向关系,并不是真正的互相联通。除非你手动拉取远程更新,否则本地数据永远是旧的——尽管客户端之间在网络上是互通的。这在当今的技术环境下,简直不可接受。如果有人在跟我协作,我希望随时得到最新进展,而不是要我去主动询问。

持续往前

Git 的分支模型非常轻量,在做一些尝试性的改动时非常方便,不用担心把主线搞得一团糟。你可以在自己的分支上提交改动,确保没问题后再合并回主分支。只要提交了,就会保留记录。但有时候还是会丢数据,比如在你还没保存时突然断电。都这个年代了,我希望软件再也不会弄丢数据,不管我有没有保存。我的工作在不停往前推进,软件也应该跟上脚步。

社交元素

Git 提交可以显示谁在什么时间做了什么,但这只局限于历史记录。当我们在自己的机器上各自工作时,没人知道其他人在做什么,即便是我们在编辑同一个文件。现在,如果我跟其他人在编辑同一个文件,我想让编辑器精确地告诉我别人在编辑文件的哪个位置。

Party

大招来了。以上讨论的特性完全不同于 Git。它不只是一个源码控制系统,一个互联的、持续往前的、社交化的系统,有点像什么?作者把它称作 Party。按照这个设想,未来的软件源码控制系统会是这个样子:

$ party start myhouse @friend1 @friend2

这条命令的作用就是启动一个名叫 myhouseparty,并邀请了我的两个朋友。在Git 里就相当于创建一个代码仓库,同时通知用户 friend1friend2

$ party talk app.js

我们开始互相交谈(talk),也就是开始逻辑功能的开发。在我们输入的时候,我们可以实时地看到其他人的输入内容和插入的位置。在 Git 里我们做的就是保存、提交、拉取、推送,但是这里不用这些操作。每个人都在一起“开party”。

$ party punchline "Basic logic works"

最终,我们的改动稳定了。尽管到目前为止我们的所有操作都会被自动保存,但是有些时间点的工作还是有必要备注一下。为此,我们建立一个 punchline,以标注一个感兴趣的点。相当于 Git 的 tag。

$ party clique refactoring @friend1

最终,用户friend1和我决定对逻辑做一个有风险的改动,但我们不希望干扰到friend2的工作。于是我创建了一个叫 refactoringclique,并邀请了 friend1。虽然 friend2也可以实时地看到我们在refactoring clique上的所有改动,但只有 friend1有编辑权限。由于clique是用来完成互不干扰的工作的,有点像 Git 里的分支概念。

$ party listen center

friend2依然在 party 的中心(center)工作,相当于 Git 的 master 分支。默认情况下,当我创建refactoring clique后,friend1 和我就不再关注 friend2的工作进展了,因为我们也要专注自己的工作。但是做了这么多重大的改动,我们还是想追上 friend2的进度,好让我们解决可能出现的冲突。执行 listen center后,我们就可以持续跟踪 friend2的工作了。相当于 Git 里的获取远程更新,然后合并到本地分支。

$ party join center

在我们合并和解决冲突、一切正常后,我们再次回到party,从此以后 friend2也能看到我们的改动了。相当于 Git 里的 push到远程master,只不过 friend2无需手动获取远程更新的操作。

$ party rewind 2min

这时候,friend2做了一些操作,也检查了我们的改动。大部分是没问题的,但是发现我们删了某个他要用到的东西。于是 friend2执行了一个操作,回到(rewind)两分钟前的状态,找回我们删除的代码。

$ party bring app.js:112–114

他们找到了,要找回第 112 行到第114行的代码,于是他们把这些代码还原(bring)到当前 party的状态里。

$ party punchline "Full logic implemented"

一切妥当后,我们又建立了一个 punchline,标志着我们到了一个新的状态点。

$ party replay start

在工作收尾之前,我们重播(replay)了一下我们的工作——当然,是快进播放的。因为 party 保存了所有操作,所以可以从头到尾重新播放一遍。

$ party end

大功告成,我们可以执行 end命令了,工作告一段落,洗洗睡。

后记

怎么样,开完这个 party 感觉如何?不得不说,作者很有想象力。这个构想的核心其实就是实时同步,永不掉线。当然,这只是作者的个人想象,至于 Git 的替代者会不会是这个样子,还有待观察。其实已经有类似的协同工具了,曾经参加了一个远程技术面试,面试官让我在线写代码,用的编辑器就是两端实时同步的,可以看到对方的输入。我相信假以时日,这种技术一定会普及。

相关文章

  • 后Git时代

    Git 对技术领域的重要性自不必说,它几乎重新定义了我们开发软件的方式。Git的应用范围甚至延伸到了非技术领域,比...

  • Git 命令

    掘金小册 git pull --> git fetch + git merge 创建成功后自动切换 git ch...

  • 码云和GIT入门操作

    安装GIT git官方下载git,地址:https://git-scm.com/downloads/ 安装后配置环...

  • git命令

    1.git add 后想撤回 使用git reset HEAD 文件名 撤回 2.git commit 后想撤回 ...

  • mac下升级git,版本没有变化

    mac下升级git git 通过brew git uprade升级后,执行git --version, 发现版本号...

  • GIT 源码安装后报错/USR/BIN/GIT: NO SUCH

    今天源码安装一个git后,执行git命令后报如下错误: $ git --version-bash: /usr/bi...

  • 在 Linux 下搭建 Git 服务器

    安装 Git #yum install -y git 安装完后,查看 Git 版本 [root@localhost...

  • 2.Git初步

    Git是什么 Git是什么 Git基础 Git基础 1. 下载安装Git GIT官网 安装好后,按win+R 输入...

  • github使用

    下载完成git后 使用git config --global user.name "Your Name"git c...

  • 我常用的 git 操作命令行整理

    git 常用操作 git init 为目录初始化 git,初始化后就可以使用 git 了。 git clone 通...

网友评论

      本文标题:后Git时代

      本文链接:https://www.haomeiwen.com/subject/reodzxtx.html