Git 是用来做啥的?想必码农朋友都知道,Git 是版本控制软件,是软件开发过程中团队协作不可或缺的软件。

但是,作为版本控制软件的 Git ,能跟聊天工具扯上关系吗?这二者似乎毫无关系,但脑洞大开的外国朋友 Ephi Gabay 就开发了一个 GIC ,活生生将 Git 改造成了一个聊天工具,有了它你就可以跟女神亲密沟通了!

这位哥们是用 Node.js 写了这么一个工具,将 Git 改装成后台数据库!更详细的,他其实是把每一句聊天作为 commit 的内容提交到仓库里!所以,执行 git log 时,可以看到完整的对话过程。想必当年 Linus 怎么也不会想到,他写的 Git 会这么被人改造!

这个项目的地址如下:

https://github.com/ephigabay/GIC

下面良许带你一步步实现这个骚过程。

1. 创建一个仓库

因为整个聊天的过程,其实就是不停在提交的过程,所以我们需要创建一个仓库。这个仓库,肯定不能是你现在工作用的仓库,否则你之前的工作过程就全玩完了。

仓库的创建不难吧?这里简单演示一下:

mkdir gitchat
cd gitchat
git init
echo "chat logs" > README
git add README
git commit -m 'fist commit'

2. 安装 GIC

既然 GIC 是基于 Git 的,那么 Git 肯定是需要安装的。而且 GIC 是使用 Node.js 编写的,所以需要安装 nodejs 。后面我们还需要用到 npm 命令,所以我们还需要安装一个 npm 。

如果是 Ubuntu 平台的话,安装过程可以使用以下命令:

sudo apt-get install git nodejs npm

如果是其它平台,请参照各自平台的安装指导手册。

然后,我们需要将 GIC 这个项目拷到自己的电脑上,如下:

git clone https://github.com/ephigabay/GIC GIC

等 GIC 完整拷备到电脑上后,我们进入到目录里并安装一些依赖文件:

cd GIC
npm install

这个安装过程可能要花费一些时间,静静等待即可。

3. 配置 GIC

对于 GIC 我们只需要配置第 1 步所建的那个仓库路径即可,需要编辑 config.js 文件的 gitRepo 字段:

module.exports = {
gitRepo: '/home/pi/tests/gitchat/.git', #配置你的聊天仓库路径
messageCheckInterval: 500,
branchesCheckInterval: 5000
};

在正式开始聊天之前,我们先试一下配置是否正确:

git clone --quiet /home/pi/tests/gitchat/.git > /dev/null

如果上面那步没报错的话,说明你所配置的路径就是正确的。

接下来,我们就可以正式开始和女神聊天了。

4. 使用 Git 开始聊天

开始聊天时,我们可以在 GIC 目录里使用以下命令启动聊天:

npm start

之后,你就会看到一个文字版的聊天窗口了。左边就是聊天内容,右边是分支。不同的分支就是不同的通道,相当于不同的聊天室,里面的聊天内容也是不同的。

但是,请注意,如果仓库里你当前所在的分支是 master 分支,那么你就不能在这个分支里聊天,要切到其它分支聊天,否则会报错。

如果要多人聊天的话,每个用户只需进到 GIC 目录,然后执行 npm start 命令即可参与聊天。

前面说了,这个聊天的过程其实是依托 git log ,所以我们在 git log 里可以看到完整的聊天记录:

pi@raspberrypi:~/tests/gitchat $ git log --pretty=format:"%p %cn %s" dev
371a477 evis hao a, wanshange jiu qu!
b6cc4ae alvin yan wo ye hen hao, yao bu yao qu gongyuan zouzou?
7bfea8f evis fine, good, and you?
017d82f alvin yan hello evis, how are you?
alvin yan init commit

5. 退出聊天

有两种方法:

  1. 按一下 Esc ,再按 ctrl+C
  2. 执行以下命令:
sudo kill `pgrep npm`

公众号:良许Linux

有收获?希望老铁们来个三连击,给更多的人看到这篇文章

Git 居然可以用来跟女神聊天?的更多相关文章

  1. 没想到,Git居然有3种“后悔药”!

    没想到,Git居然有后悔药! 你知道Git版本控制系统中都有哪些"后悔药"吗? 本文通过案例讲解git reset . git revert . git checkout在版本控制 ...

  2. 良许Linux | Linux学习方法及学习资料汇总

    很多人想学习Linux,却不知道怎么着手,甚至不知道Linux有哪些方向,非常迷茫.基于此,我特地写了篇文章介绍Linux方向性问题,没想到一不小心成了爆款: 到什么程度才叫精通 Linux?​ 看完 ...

  3. 活久见!Linux命令行居然也可以用来查看图像?

    在 Linux 中有很多 GUI 应用程序可以查看图像,但是这对经常使用命令行来工作的人可能会觉得很繁琐.今天要介绍的是 3 个实用的 CLI 图像查看器来在终端上查看图像,让那些使用 CLI 的朋友 ...

  4. 我的Git手册

    本文肯定不是Git的最佳的教程,它只是本人的Git操作手册,我将从一些实际问题出发,让熟悉SVN用户顺利过度到Git来(当然包括我自己了),其中会加入一些个人感受或看法,相信会对大家有些启发.另外,全 ...

  5. web聊天室总结

    前言: 最近在写一个聊天室的项目,前端写了挺多的JS(function),导致有点懵比,出了BUG,也迟迟找不到.所以昨天把写过的代码总结了一下,写成博客. 项目背景 参考博客: http://www ...

  6. Git常用命令总结

    Git常用命令总结 git init      在本地新建一个repo,进入一个项目目录,执行git init,会初始化一个repo,并在当前文件夹下创建一个.git文件夹.   git clone ...

  7. centos7.2下编译安装&&使用-git代码库

    centos7.2下编译安装git Git简介 Git是一个分布式版本控制系统 Git vs SVN SVN是典型的集中式版本控制起,版本库集中存放在服务器,当我们用自己的电脑干活儿的时候,需要先从中 ...

  8. Git: 一些基本命令

    1.快速获取远程项目 1) git clone xxx.git // 如:git clone git://git.kernel.org/pub/scm/git/git.git 2) git clone ...

  9. [译]git reset

    git reset 如果说git revert是一个安全的撤销方式, 那么git reset就是一个非常危险的方法了. 当你使用git reset撤销的时候, 你没有可能在回到最初了-他是一个永久的不 ...

随机推荐

  1. Docker容器启动时初始化Mysql数据库

    1. 前言 Docker在开发中使用的越来越多了,最近搞了一个Spring Boot应用,为了方便部署将Mysql也放在Docker中运行.那么怎么初始化 SQL脚本以及数据呢? 我这里有两个传统方案 ...

  2. 8分钟为你详解React、Angular、Vue三大前端技术

    [引言] 当前世界中,技术发展非常迅速并且变化迅速,开发者需要更多的开发工具来解决不同的问题.本文就对于当下主流的前端开发技术React.Vue.Angular这三个框架做个相对详尽的探究,目的是为了 ...

  3. django-CBV刨析、模板层

    今日内容概要 CBV源码剖析 模版层 模版语法传值 模版语法之过滤器 模版语法之标签 自定义过滤器.标签及inclusion_tag 模版的继承 模版的导入 FBV与CBV ""& ...

  4. STM32串口DMA接收数据错位——暴力解决方法

    背景:两片STM32通过串口通信,为了减小CPU负担,采用DMA进行通信,发送端为STM32F103C8T6,接收端为STM32F407VET6.在调试的过程中发现,一直出现数据错位的问题,接收端尝试 ...

  5. CTR学习笔记&代码实现6-深度ctr模型 后浪 xDeepFM/FiBiNET

    xDeepFM用改良的DCN替代了DeepFM的FM部分来学习组合特征信息,而FiBiNET则是应用SENET加入了特征权重比NFM,AFM更进了一步.在看两个model前建议对DeepFM, Dee ...

  6. Codeforces Round #646 (Div. 2)【B. Subsequence Hate题解】

    具体思路已经在代码注释中给出,这里不再赘述. #include<iostream> #include<algorithm> using namespace std; int t ...

  7. Rocket - config - Configs

    https://mp.weixin.qq.com/s/z2gUYuYQAHQCa_5HZcBszw   介绍各个配置项的组织方式.   参考链接: https://docs.qq.com/sheet/ ...

  8. 【HIVE & Spark】将hive引擎换成Spark,运行速度快!怎么换?请看本文

    本教程仅仅是使用spark,能在hive用就行. 1.下载Spark; 2.WinSCP上传spark压缩包到虚拟机: 3.tar -zxvf spark-2.3.3-bin-without-hado ...

  9. 面试官:兄弟,说说Java的static关键字吧

    读者乙在上一篇我去系列文章里留言说,"我盲猜下一篇标题是,'我去,你竟然不知道 static 关键字'".我只能说乙猜对了一半,像我这么有才华的博主,怎么可能被读者猜中了心思呢,必 ...

  10. Java实现 LeetCode 39 组合总和

    39. 组合总和 给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合. candidates 中的数字 ...