Decorative image frame

2.把项目交给git

小白的故事

本故事纯属虚构,如有雷同,^0^那可太巧了

小白接到上级指示,所有的项目代码都要用版本管理工具进行管理。本着对项目负责的态度,小白开始在网上搜索版本管理软件。
考察了svn和git后,最后决定使用git进行项目管理。

对于刚刚不如程序猿行列的小白来说,git好神秘啊,linus大神好神秘啊。

沐浴更衣,斋戒数天。开始使用git。

使用git的第一步当然是安装了。

1
2
$ sudo apt update
$ sudo apt install git

ok,搞定,这样就安装完了。

打开项目目录,输入神圣的git初始化命令

1
2
$ git init
Initialized empty Git repository in /home/shooke/learngit/.git/

完成了?这么简单?没有报错?小白小激动了一下,git初始化就这么简单?检查一下便知道。查看了一下,项目下果然多了个.git文件夹。

接下来我们把项目加入到git代码仓库

1
2
git add .
git commit -m "init"

这样,文件就被git记录下来了。就是这么easy。

不一会小白写好了一个新功能,然后git add . git commit -m "我有完成了一个牛X的功能"记录下自己的工作。好开心,原来git这么简单,每次做完功能先 add然后commit就好了。

就这样小白开始了他的git之旅…

小结

git init可以初始化项目
git add .可以将文件加入到暂存区,.是当前目录的意思,可以将目录下所有文件进行暂存,如果要针对某个文件可以加上文件名如git add readme.md
git commit -m "init"将文件加入到git代码仓库,并生成一条init的log记录

1.啥是git

事情要从linux说起,git的作者就是linux之父linus。在2002年以前,都是通过手工比较代码的方式来合并社区反馈的代码,进行合并。但随着linux项目越来月庞大。手工合并变得不现实了。当时市面上也有cvs或svn这样的版本控制软件。但linus反对使用这些集中式的版本控制系统,因为它们都必须联网才可以使用,而且速度比较慢。
有一些好用的速度快的系统,不过都是需要付费的,这与linux的开源精神不符。
2002年之前,由于没有合适的版本控制系统,linus都是通过手工diff去比较合并代码的。这时的工作太过繁重。
2002年的时候BitMover公司,将BitKeeper授权linux社区免费使用。人多的地方就有江湖,江湖中从来不乏高手,特别是linux社区。2005年,社区中有一些人将BitKeeper破解了。这可是人家BitMover公司吃饭的家伙啊,你破解了人家当然不愿意了。于是BitMover公司怒了,收回了免费使用权。
linus一看也不乐意啊。你不让我用那我就自己写一个呗。于是linus用了2周的时间,自己写了一个分布式的版本控制系统(牛人的世界就是这么牛X)。也就是git。很快(有多快呢,一个月左右)linux系统就全部由git管理了。
后来的事情大家都知道了。2008年github上线,让git走进了千家万户,是个知道开源的都知道github。知道github还不知道git(就相当于吃了猪肉,没见过猪跑一样),那是不可能的。

0.教程介绍

市面上已经有很多的git教程了,比如廖雪峰老师的git教程,还有阮一峰老师写的关于git的一些教程。我在刚开始接触git的时候,就是读的他们教程。他们写的都很好,git的所有功能都有所涵盖,但是很多人知道了命令,但在工作中还是不清楚该如何使用。

与网络上所有的教程都不同,本教程更注重使用场景,会根据不同的场景,选择最优的git命令,来解决问题。

教程中所有的命令都会有一段工作场景的介绍,我们可以跟随小白的视角,一起学习git是如何使用的。以及最后会做出总结,介绍命令的功能,以及一些使用技巧。

git中文文件名乱码解决方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
$ git status
On branch master

No commits yet

Untracked files:
(use "git add <file>..." to include in what will be committed)

Untitled-1
"git\347\256\200\344\273\213"

nothing added to commit but untracked files present (use "git add" to track)


其实"git\347\256\200\344\273\213"是个中文名的文件git简介,中文部分成了乱码,解决方法很简单

1
git config --global core.quotepath false

这样,不对0x80以上的字符进行quote,解决git status/commit时中文文件名乱码

deepin修改git提示语言

deepin系统很好用,汉化也很彻底,安装git后。提示都是中文。不过不太习惯。还是改成英文比较顺眼。
修改~/.bashrc文件加入

1
2
3
# Set Git language to English
#alias git='LANG=en_US git'
alias git='LANG=en_GB git'

关闭命令行,重新打开,如如git命令就会提示英文了

js实现防抖和节流

防抖和节流是避免过度处理的有效手段。目的就是为了解决一些事件频繁的触发问题。

防抖

先说一下防抖,当持续触发事件时,一定时间段内没有再触发事件,事件处理函数才会执行一次,如果设定的时间到来之前,又一次触发了事件,就重新开始延时。

通俗易懂点就是,领导安排任务,你得等领导全部说完了再去做,不能说一个就跑去做了,你得等领导说完。

举个很典型的例子,搜索提示是个很典型的使用场景。每次输入框的内容发生更改就会发送一个请求,这其实是没有必要的。
理想的方式应该是当用户不在输入时,在发送请求。怎么确定用户停止输入呢?我们定义一个等待时间,比如500ms。当用户停止输入500ms后发送一个请求。
500ms内如果在不停的输入内容,那我们就重新重新计时。

阅读全文...

解决element ui el-select控件多选时option设置为disabled,但可以删除标签,造成无法恢复的bug

问题起因

今天遇到一个问题,需求是,客户选择栏目时,不属于自己的栏目不可修改。但需要显示出来。实现需求使用了element ui的el-select组件。
对于已选栏目的显示,和对栏目的选项取消都比较好。不属于自己的栏目使用了option的disabled属性。列表中的选项控制正常,对于disabled属性为true的元素不可选。
但是在展示已选则的栏目时,option中禁用的选项依然有删除的小叉号。而且还是可以使用的,点击后就被删除了。在列表中的选中状态也取消了。这可闹大了,没法恢复啊。

解决思路

思路很简单,在对选项进行移除时做个判断。如果选项是禁用的,就不操作。
实现中用到了value属性,用于显示备选项。change事件用于处理选中的值,remove-tag事件处理移除选项时的判断
有几个问题需要注意,事件的执行顺序是先出发change后出发remove-tag所以要让数据返回变为异步,保证remove-tag事件完成后在返回数据

阅读全文...

vue中使用neditor

neditor是从ueditor改写过来了,做了不少优化,我最喜欢的就是去掉了服务端附件配置请求。还有一个有点就是,可以很方便的对接七牛cdn或oss。
如果是简单的使用可以用vue-neditor-wrap,复杂场景下会有bug,所以自己写了个组件,将必要的js引入放到了index.html中。下面是使用注意事项,追后有本示例的源码。

阅读全文...