Amy's Blog

notes


  • Home

  • Tags

  • Categories

  • Archives

  • Sitemap

  • Search

代码格式化工具prettier

Posted on 2021-02-03 | In Frontend前端 , Prettier | 0 comments | Visitors:

prettier是一款强势武断的代码格式化工具,它几乎移除了编辑器本身所有的对代码的操作格式,然后重新显示。就是为了让所有用这套规则的人有完全相同的代码。在团队协作开发的时候更是体现出它的优势。与eslint,tslint等各种格式化工具不同的是,prettier只关心代码格式化,而不关心语法问题。

编辑器使用prettier

脚本使用prettier

安装

1
yarn add prettier -D

使用

1
2
3
prettier--write <文件路径+文件名>
例如
prettier --write src/**/*.{js,ts,tsx}

自定义配置规则方式

  • .prettierrc 文件,支持yaml和json格式;或者加上 .yaml/.yml/.json 后缀名
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    {
    "printWidth": 160, //超过160字符换行
    "semi": false,
    "singleQuote": true,
    "trailingComma": "es5",
    "bracketSpacing": true,
    "jsxBracketSameLine": false,
    "arrowParens": "avoid",
    "requirePragma": false,
    "useTabs": false,
    "htmlWhitespaceSensitivity": "css"//内联标签与块级标签格式化有区别
    }
  • .prettierrc.toml 文件(当为toml格式的时候,后缀是必须的)
  • prettier.config.js 或者 .prettierrc.js,需要返回一个对象
  • package.json文件中加上”prettier”属性

总结

1、.prettierrc 的优先级高于在vscode全局配置settings.json中格式化配置的优先级
2、 编辑器配置适合个人开发、脚本配置适合团队开发

ESLint+Prettier+ husky + stylelint +lint-staged代码规范实践

Posted on 2021-02-03 | In Frontend前端 , team-norm团队规范 , code-norm代码规范 | 0 comments | Visitors:

Prettier、 ESLint 、stylelint、husky 、lint-staged基本知识

Prettier : 代码格式化例如超过设置的行代码长度换行处理,结尾不使用分号,统一使用单引号

prettier 就是把你的代码转化成一个抽象语法树 AST 然后根据 AST 将代码按照 prettier 的风格输出即可。可以用 prettier 官方提供的检测网站来看 prettier 的转化过程。

Eslint: 代码质量的校验。例如使用了未定义的变量、三等号、api语法错误、修改const变量等等

  • 命令
    1
    2
    检查 eslint src/**/*.{js,ts,tsx}
    自动修复 eslint --fix src/**/*.{js,ts,tsx}
  • eslint-config-standard配置包扩展社区中流行的最佳实践的风格指南。
  • eslint-config-prettier 关闭 Eslint 中与 Prettier 冲突的选项,只会关闭冲突的选项,不会启用Prettier的规则
  • eslint-plugin-prettier 先使用Prettier对代码进行格式化,再并对不一致的地方进行标记

stylelint: stylelint 是一个强大和现代的 CSS 审查工具,有助于开发者推行统一的代码规范,避免样式错误stylelint拥有超过150条的规则,包括捕捉错误、最佳实践、控制可以使用的语言特性和强制代码风格规范。。stylelint 由 PostCSS 提供技术支持,所以它也可以理解 PostCSS 解析的语法,比如 SCSS。
命令

1
stylelint --fix src/**/*.{html,css,scss}

插件:

  • stylelint-config-prettier:禁用所有与格式相关的 Stylelint 规则,解决 prettier 与 stylelint 规则冲突,确保将其放在 extends 队列最后,这样它将覆盖其他配置。
  • stylelint-config-standard:官网提供的 css 标准
  • stylelint-prettier:基于 prettier 代码风格的 stylelint 规则
  • stylelint-config-recess-order: 属性排列顺序

EditorConfig: 生成 .editorconfig 配置文件,规定当前编辑器的一些设定。抹平编辑器的差异。格式化的生效策略:自定义配置>editorconfig>编辑器的setting

husky : git 操作的钩子。

lint-staged : 只对 git 中staged(变更)的文件进行代码格式的校验和代码质量的校验操作。而不是项目中所有的文件。

1
2
3
//报错 在lint-staged命令中移除git add 命令本身自带git add

‼ Some of your tasks use `git add` command. Please remove it from the config since all modifications made by tasks will be automatically added to the git commit index.

ESLint和Prettier区别

1、ESLint 主要包含代码格式的校验,代码质量的校验,ESLint 在出--fix自动修复功能前只会提示一些warning和error,改起来非常复杂。
2、Prettier 只是格式化代码 。
*tips:如果你觉得的eslint自带的修复功能就足够的话可以不加Prettier *

ESLint+Prettier+ husky + stylelint +lint-staged 提高前端项目质量

通过pre-commit阶段增量校验的模式,尽量避免对老旧代码的影响;稳健地逐步完善老项目的强制校验和格式化提高前端项目质量、统一项目代码风格

1
yarn add husky lint-staged prettier eslint-plugin-prettier eslint-config-prettier stylelint stylelint-config-prettier stylelint-config-standard stylelint-prettier -D

我在项目中的配置可能不是很完美,有问题可以提出来
.eslintrc

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
{
"env": {
"amd": true,
"browser": true,
"node": true,
"es6": true
},
"extends": [
"react-app",
"plugin:prettier/recommended",
"prettier/react"
],
"plugins": [
"prettier"
],
"parser": "babel-eslint",
"rules": {
"prettier/prettier": "error"
}
}

.stylelintrc

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
{
"defaultSeverity": "error",
"extends": [
"stylelint-config-recommended",
"stylelint-config-standard",
"stylelint-prettier/recommended",
],
"rules": {
"selector-pseudo-class-no-unknown": [true, {
ignorePseudoClasses: ["global"]
}],
"length-zero-no-unit": null,
"indentation": 2,
"max-empty-lines": 1,
"block-no-empty": true,
"block-opening-brace-newline-after": "always-multi-line",
"block-opening-brace-space-after": "always-single-line",
"block-opening-brace-space-before": "always",
"block-closing-brace-empty-line-before": "never",
"declaration-empty-line-before": "never",
"declaration-block-no-duplicate-properties": true,
"declaration-block-no-redundant-longhand-properties": true,
"shorthand-property-no-redundant-values": true,
"no-empty-source": true,
"no-eol-whitespace": true,
"no-extra-semicolons": true,
"no-invalid-double-slash-comments": true,
"no-missing-end-of-source-newline": true,
"at-rule-no-unknown": null,
},
}

.editorconfig

1
2
3
4
5
6
7
8
9
10
11
12
13
# http://editorconfig.org
root = true

[*]
indent_style = space
indent_size = 2 # 用两个空格代替制表符;
end_of_line = lf # win用cr lf,linux/unix用lf,mac用cr。统一window和mac
charset = utf-8
trim_trailing_whitespace = true# 在保存时删除尾部的空白字符;
insert_final_newline = true# 在文件结尾添加一个空白行;
max_line_length = 160# 每行代码最大宽度 160
[*.md]
trim_trailing_whitespace = false

package.json

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
{
"name": "xxx_front",
"version": "0.1.0",
"private": true,
"dependencies": {
"antd-mobile": "^2.3.1",
"axios": "^0.19.0",
"babel-plugin-import": "^1.12.2",
"babel-plugin-syntax-dynamic-import": "^6.18.0",
"chart.js": "^2.9.4",
"copy-to-clipboard": "^3.2.0",
"crypto-js": "^3.1.9-1",
"customize-cra": "^0.8.0",
"http-proxy-middleware": "^0.20.0",
"js-cookie": "^2.2.1",
"less": "^3.10.3",
"less-loader": "^5.0.0",
"node-sass": "^4.14.1",
"qs": "^6.9.0",
"react": "^16.11.0",
"react-app-rewired": "^2.1.4",
"react-document-title": "^2.0.3",
"react-dom": "^16.11.0",
"react-loadable": "^5.5.0",
"react-redux": "^7.1.1",
"react-router": "^5.1.2",
"react-router-dom": "^5.1.2",
"react-scripts": "3.2.0",
"react-sticky": "^6.0.3",
"redux": "^4.0.4",
"redux-thunk": "^2.3.0",
"url-parse": "^1.4.7",
"webpack": "4.41.0"
},
"scripts": {
"start": " react-app-rewired start",
"build:analyze": "set REACT_APP_BUILD_ENV=production && react-app-rewired build --analyze",
"lint": "eslint src/**/*.{js,ts,tsx}",
"fix": "prettier --write src/**/*.{js,ts,tsx}",
"lint:style": "stylelint --fix src/**/*.{html,css,scss}"
},
"husky": {
"hooks": {
"pre-commit": "lint-staged"
}
},
"lint-staged": {
"src/**/*.{css,scss}": [
"stylelint --fix",
"prettier --write"
],
"src/**/*.{js,ts,tsx}": [
"eslint --fix",
"prettier --write"
]
},
"browserslist": {
"production": [
"> 1%",
"last 5 versions",
"IOS > 8",
"Android > 4.6",
"UCAndroid >= 9",
"QQAndroid >= 8.2",
"not dead",
"not ie <= 11",
"not op_mini all"
],
"development": [
"last 1 chrome version",
"last 1 firefox version",
"last 1 safari version"
]
},
"devDependencies": {
"eslint-config-prettier": "^7.2.0",
"eslint-plugin-prettier": "^3.3.1",
"husky": "^4.3.8",
"lint-staged": "^10.5.3",
"prettier": "^2.2.1",
"stylelint": "^13.9.0",
"stylelint-config-prettier": "^8.0.2",
"stylelint-config-standard": "^20.0.0",
"stylelint-prettier": "^1.1.2",
"webpack-bundle-analyzer": "^4.3.0",
"webpack-cli": "^3.3.10"
}
}

提交commit之后

校验成功

校验失败

vscode插件推荐。

EditorConfig:生成 .editorconfig 配置文件,规定当前编辑器的一些设定。
ESLint:代码质量检查。
styleLint:css代码质量检查。
Prettier:格式化代码
Code Spell Checker:单词拼写检查。
Indent-Rainbow:彩虹缩进,缩进不规范时会标红提示。

vscode 的 setting.json

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
{
"workbench.colorTheme": "Dracula Soft",
"editor.formatOnSave": true,//保存时使用VSCode 自身格式化程序格式化
"javascript.format.enable": false,//关闭编辑器对 js 文件的格式化,交给 ESLint 来做格式化,否则会格式化两次,解决editor.formatOnSave的兼容问题
"editor.codeActionsOnSave": {
"source.fixAll": true,
// For ESLint
"source.fixAll.eslint": true,
// For TSLint
"source.fixAll.tslint": true,
// For Stylelint
"source.fixAll.stylelint": true
},
"eslint.probe": [
"javascript",
"javascriptreact",
"typescript",
"typescriptreact"
],
}

Docker简介安装

Posted on 2020-11-24 | In Docker | 0 comments | Visitors:

什么是Docker?

Docker 是⼀个开源,轻量级的应⽤容器引擎,以前我们想在window折腾linux系统,在上⾯部署应⽤来测试什么的,我们通常会安装⼀个虚拟机,在虚拟机上安装操作系统啊,应⽤什么的,搞垮了可以重新来什么的,不影响主机的系统,不过虚拟机⽐较重,启动慢,现在我们⽤docker,相⽐于虚拟机装操作系统,Docker是使⽤容器承载应⽤程序,轻量,⾼效,⽅便快捷的部署

  • 装应用的容器
  • 开发、测试、运维都偏爱的容器化技术
  • 轻量级
  • 扩展性
  • 一次构建、多次分享、随处运行

Docker的基本概念

镜像(Image)、容器(Container)与仓库(Repository),这三个是docker中最基本也是最核心的概念,对这三个概念的掌握与理解,是学习docker的关键。

镜像(Image)
Docker本质上是一个运行在Linux操作系统上的应用,而Linux操作系统分为内核和用户空间,无论是Centos还是Ubuntu,都是在启动内核之后,通过挂载Root文件系统来提供用户空间的,而Docker镜像就是一个Root文件系统。镜像Image就是相当于安装操作的系统盘,U盘等等,⾥⾯可以包含node、gitlab等等,当然也可以包含完整的centos系统,甚⾄是centos + jenkins的或者centos + verdaccio(npm 私有库)

1
2
3
4
# 列出所有镜像
docker image ls
# 列表所有镜像
docker images

从仓库拉取镜像
前面我们已经演示过使用docker pull命令拉取了hello-world镜像了,当然使用docker image pull命令也是一样的。
一般默认是从Docker Hub上拉取镜像的,Docker Hub是Docker官方提供的镜像仓库服务(Docker Registry),有大量官方或第三方镜像供我们使用,比如我们可以在命令行中输入下面的命令直接拉取一个Centos镜像:

1
docker pull centos

复制代码docker pull命令的完整写法如下:

1
docker pull [选项] [Docker Registry 地址[:端口号]/]仓库名[:标签]

复制代码拉取一个镜像,需要指定Docker Registry的地址和端口号,默认是Docker Hub,还需要指定仓库名和标签,仓库名和标签唯一确定一个镜像,而标签是可能省略,如果省略,则默认使用latest作为标签名,另外,仓库名则由作者名和软件名组成。
那么,我们上面使用centos,那是因为省略作者名,则作者名library,表示Docker官方的镜像,所以上面的命令等同于:

1
docker pull library/centos:latest

复制代码因此,如果拉取非官方的第三方镜像,则需要指定完整仓库名,如下:

1
docker pull mysql/mysql-server:latest

复制代码运行镜像
使用docker run命令,可以通过镜像创建一个容器,如下:

1
docker run -it centos /bin/bash

查看主机下存在的镜像

1
docker images

复制代码删除镜像
当本地有些镜像我们不需要时,那我们也可以删除该镜像,以节省存储空间,不过要注意,如果有使用该镜像创建的容器未删除,则不允许删除镜像。

1
2
# image_name表示镜像名,image_id表示镜像id
dockere image rm image_name/image_id

复制代码删除镜像的快捷命令:

1
docker rmi image_name/image_id

复制代码好了,关于Docker镜像的相关知识,我们就简单地介绍到这里,有机会的话,我们单独写一篇文章来谈谈,特别构建Docker镜像部分的相关知识,有必要深入再学习一下。

** 容器(Container)**
容器(Container)就是实际上跑应⽤的地⽅啦,可以理解为⼀个个互相隔离的⼩虚拟机,你的镜像就是安装在这⾥
启动容器有两种方式,一种是我们前面已经介绍过的,使用docker run命令通过镜像创建一个全新的容器,如下:

1
docker run hello-world

复制代码另外一种启动容器的方式就是启动一个已经停止运行的容器:

1
2
# container_id表示容器的id
docker start container_id

复制代码要停止正在运行的容器可以使用docker container stop或docker stop命令,如下:

1
2
# container_id表示容器的id
docker stop container_id

容器名或ID:重启容器

1
docker restart

如果要查看本地所有的容器,可以使用docker container ls命令:

1
2
# 查看所有容器
docker container ls

复制代码查看所有容器也有简洁的写法,如下:

1
2
3
# 查看所有容器
docker ps
docker ps -a :查看当前容器的运行状态(-a 是查看当前所有的容器,包括未运行的)

删除容器
我们也可以使用docker container rm命令,或简洁的写法docker rm命令来删除容器,不过不允许删除正在运行的容器,因此如果要删除的话,就必须先停止容器,

1
2
3
4
5
# container_id表示容器id,通过docker ps可以看到容器id
docker container rm image_name :删除镜像(先停止容器)

$ docker rm container_id
$ docker rm -f container_id(第一个字符即可) container_id第一个单词 强制删除

复制代码当我们需要批量删除所有容器,可以用下面的命令:

1
2
# 删除所有容器
docker rm $(docker ps -q)

复制代码# 删除所有退出的容器

1
docker container prune

复制代码进入容器

1
2
# 进入容器,container_id表示容器的id,command表示linux命令,如/bin/bash
docker exec -it container_id command

端口映射
端口映射有三种方式

1
docker run -itd -p 9090:9090 alpine_test(container_name) sh

映射指定地址的主机端口到容器端口

1
2
3
docker -p ip:hostPort:containerPort

比如:docker run -p 127.0.0.1:3306:3306 映射本机3306端口到容器的3306端口

映射指定地址的任意可用端口到容器端口

1
2
3
docker -p ip::containerPort

比如:docker run -p 127.0.0.1::3306 映射本机的随机可用端口到容器3306端口

映射本机的指定端口到容器的指定端口

1
2
3
docer -p hostPort:containerPort

比如:docker run -p 3306:3306 # 映射本机的3306端口到容器的3306端口

仓库(Repository)
仓库(Repository) ⽤于存放镜像,有点类似的git仓库,docker hub是个公共的仓库,不过在我们这边⽹速慢,⼀般把源设置为淘宝源等

后⾯我们会⽤⼏个docker容器分别安装jenkins、verdaccio、yapi等组成⼀个单机的⼩⼩微服务,现在多多少少知道为什么要⽤docker了吧

window安装docker

下载安装包

1
https://hub.docker.com/editions/community/docker-ce-desktop-windows/

按照安装向导next即可

运行

不会自动启动
在开始菜单搜索Docker, 打开即可
image.png
细节配置, 可参考这个链接(https://docs.docker.com/docker-for-windows/#docker-settings-dialog)

测试是否安装成功

在CMD中运行如下命令, 有显示版本号或者显示”Hello from Docker!”, 则代表安装成功

  • 查看版本号
    1
    docker -v
    列出容器
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    docker ps [OPTIONS]

    OPTIONS说明:

    -a :显示所有的容器,包括未运行的。

    -f :根据条件过滤显示的内容。

    --format :指定返回值的模板文件。

    -l :显示最近创建的容器。

    -n :列出最近创建的n个容器。

    --no-trunc :不截断输出。

    -q :静默模式,只显示容器编号。

    -s :显示总的文件大小。
  • 安装nginx
    1
    2
    docker run nginx
    docker run -p 8080:80 nginx
    史上最全Docker环境安装指南
    10分钟快速掌握Docker必备基础知识

docker上手安装mongo、node、yapi部署以及dockerfile定制镜像

Posted on 2020-11-24 | In Frontend前端 , team-norm团队规范 , mock-data-norm模拟数据规范 | 0 comments | Visitors:

安装mongo

1
docker pull mongo
1
docker search mongo

本地docker上启动mongo

1
docker run -itd --name mongo -p 27017:27017 mongo --auth

docker-compose 安装yapi

docker-compose.yml admin@163.com登录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
version: '3'
services:
yapi-web:
image: jayfong/yapi:latest
container_name: yapi-web
ports:
- 40001:3000
environment:
- YAPI_ADMIN_ACCOUNT=admin@163.com
- YAPI_ADMIN_PASSWORD=admin
- YAPI_CLOSE_REGISTER=true
- YAPI_DB_SERVERNAME=yapi-mongo
- YAPI_DB_PORT=27017
- YAPI_DB_DATABASE=yapi
- YAPI_MAIL_ENABLE=false
- YAPI_LDAP_LOGIN_ENABLE=false
- YAPI_PLUGINS=[]
depends_on:
- yapi-mongo
links:
- yapi-mongo
restart: unless-stopped
yapi-mongo:
image: mongo:latest
container_name: yapi-mongo
volumes:
- ./data/db:/data/db
- ./data/log:/var/log/mongodb
expose:
- 27017
restart: unless-stopped

或者Dockerfile安装yapi

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
######## 构建 ########
FROM --platform=${BUILDPLATFORM:-amd64} node:12.16.3-alpine3.11 as builder

# 安装构建工具
RUN apk add --update --no-cache ca-certificates curl wget cmake build-base git bash python make gcc g++ zlib-dev autoconf automake file nasm \
&& update-ca-certificates

# YApi 版本
ENV YAPI_VERSION=1.9.2

# 编译脚本
WORKDIR /yapi/scripts
COPY . .
RUN yarn && yarn build

WORKDIR /yapi/vendors

# 拉取 YApi 源码
RUN git clone \
--branch "v${YAPI_VERSION}" \
--single-branch \
--depth 1 \
https://github.com/YMFE/yapi.git .

# 拷贝启动脚本
RUN cp /yapi/scripts/start.js ./start.js

# 执行一些准备工作
RUN node /yapi/scripts/prepare.js $(pwd)

# 安装依赖
RUN yarn

# 清理文件
RUN node /yapi/scripts/clean.js $(pwd)

# 构建应用
RUN yarn build-client

# 再次清理以删除构建缓存文件
RUN node /yapi/scripts/clean.js $(pwd)

# 删除脚本
RUN rm -rf /yapi/scripts


######## 镜像 ########
FROM node:12.16.3-alpine3.11

WORKDIR /yapi

COPY --from=builder /yapi .

EXPOSE 3000

CMD ["node", "/yapi/vendors/start.js"]

Dockerfile.web

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
FROM jayfong/yapi:latest

ENV YAPI_ADMIN_ACCOUNT=admin@163.com
ENV YAPI_ADMIN_PASSWORD=admin
ENV YAPI_CLOSE_REGISTER=false
ENV YAPI_DB_SERVERNAME=127.0.0.1
ENV YAPI_DB_PORT=27017
ENV YAPI_DB_DATABASE=yapi
ENV YAPI_MAIL_ENABLE=false
ENV YAPI_LDAP_LOGIN_ENABLE=false
ENV YAPI_PLUGINS=[]

RUN echo 'http://dl-cdn.alpinelinux.org/alpine/v3.6/main' >> /etc/apk/repositories && \
echo 'http://dl-cdn.alpinelinux.org/alpine/v3.6/community' >> /etc/apk/repositories && \
apk add --update --no-cache mongodb && \
mkdir -p /data/db

EXPOSE $PORT

CMD mongod --fork --logpath=mongodb.log && node /yapi/vendors/start.js

git遇到的错误

Posted on 2020-06-26 | In Tools , git | 0 comments | Visitors:

1、Could not open file .git/rebase-merge/done for reading: No such file or directory

解决方案

1
git rebase --abort
1
2
3
4
git rebase --skip与--abort的区别是什么
git rebase --abort 是无风险的操作,会回到rebase操作之前的状态,2个分支的commits毫发无损。
git rebase --skip 是高风险的操作,引起冲突的commits会被丢弃(这部分代码修改会丢失)。
git rebase --continue 用于修复冲突,提示开发者,一步一步地有没有解决冲突,fix conflicts and then run "git rebase --continue"

git clone https 和 SSH 的区别

Posted on 2020-06-26 | In Tools , git | 0 comments | Visitors:

1、https可以随意克隆github上的项目,而不管是谁的;SSH你必须是你要克隆的项目的拥有者或管理员,且需要先添加 SSH key ,否则无法克隆。

2、https url 在push的时候是需要验证用户名和密码的;而 SSH 在push的时候,是不需要输入用户名的,如果配置SSH key的时候设置了密码,则需要输入密码的,否则直接是不需要输入密码的。

20、查看当前分支是从哪个分支拉取的 git log –oneline –graph –decorate

git 配置ssh

1
2
$ cd ~/.ssh (or  cd $HOME/.ssh) 
$ ls

检查 id_rsa.pub等是否存在存在就通过

1
2
3
$ clip < ~/.ssh/id_rsa.pub(如果报错clip: command not found的话可以用pbcopy < ~/.ssh/id_rsa.pub)
或者
cat ~/.ssh/id_rsa.pub| pbcopy
  • 拷贝id_rsa.pub

  • 否则创建ssh key

    1
    $ ssh-keygen -t rsa -C"your_email@example.com"

    输入文件以及密码可以为空

你的 SSH key 已经创建成功,你只需要添加到github的SSH key上就可以了

git常见命令

Posted on 2020-06-26 | In Tools , git | 0 comments | Visitors:

1、设置户名和email

1
2
3
[$ git config --global user.name gitaccount](http://lib.csdn.net/base/git)

$ git config --global user.email gitaccount@example.com

2、查看用户名和email

1
$ git config user.name/email。

3、取消全局配置

1
2
3
$ git config --global --unset user.name

$ git config --global --unset user.email

4、#全局配置账户已经移除

1
$ git config --global user.name

5、#全局配置邮箱已经移除

1
 git config --global user.email

6、移除远程的库

1
git remote remove origin

7、添加现在库的地址

1
git remove add origin

8、git拉取新的远程分支

1
git fetch

9、git 拉取远程分支,远程分支不存在自动删除本地分支

1
git fetch -p

10、git 切换分支

1
git checkout 分支名字

git创建并切换分支

1
git checkout -b 分支名

git创建分支

1
git branch 分支名

11、如果当前分支与多个主机存在追踪关系,则可以使用-u选项指定一个默认主机,这样后面就可以不加任何参数使用

1
git push -u origin master

12、如果不小心commit了一个不需要commit的文件,可以对其进行撤销。

先使用git log 查看 commit日志

1
2
3
git reset —hard commit_id

git push origin HEAD —force

13、git 列出本地分支和远程分支

1
git branch -a

14、git 查看远程分支(这个删除远程分支有时候并不能删掉)

1
git branch -r

15、git删除本地分支

1
git branch -D xxxxx

16、git删除远程分支

1
git branch -r -d origin/branch-name

17、git 删除远程分支

1
git push origin --delete new

18、git 重命名分支,如果newbranch名字分支已经存在,则需要使用-M强制重命名,否则,使用-m进行重命名。

1
git branch -m | -M oldbranch newbranch

19、把一个已有的本地仓库与之关联,然后,把本地仓库的内容推送到GitHub仓库。

1
git remote add origin git@github.com:michaelliao/learngit.git

一个目录的git初始化

1
git init

取消一个目录的git初始化

1
rm -rf .git

git 克隆线上的库并重新命名
git clone <版本库的网址> <本地目录名>

git 将某个文件恢复
当你git status 看到某个文件修改了之后,你想撤回修改,可以执行以下命令就可以了

1
git checkout 文件名

git 合并分支
fast-forward方式就是当条件允许的时候,git直接把HEAD指针指向合并分支的头,完成合并。属于“快进方式”,不过这种情况如果删除分支,则会丢失分支信息。因为在这个过程中没有创建commit
要加–no-ff:不使用fast-forward方式合并,保留分支的commit历史
–squash:使用squash方式合并,把多次分支commit历史压缩为一次

1
git merge master --no-ff

git 查看远端仓库的地址

1
git remote -v

git 修改远程仓库地址

1
2
git remote set-url origin [url]
git push origin master

提交到远程报错fatal: refusing to merge unrelated histories
git pull origin master –allow-unrelated-histories

zsh切换bash bash切换zsh

Posted on 2020-06-26 | In Tools | 0 comments | Visitors:

iTerm2是一种 OSX 的终端模拟器而非 Shell 本身。
Bash是目前最通用、最常见的Shell,也是众多Linux发行版的标配。
Zsh是一种更强大的、被成为“终极”的Shell,意思是Shell能具备的功能它基本都提供了。跟Bash相比,Zsh的补全功能强大了许多,可以自动补全命令、参数、文件名、进程、用户名、变量、权限符,等等…… 另外,还支持插件,通过插件又可以扩展出许多功能来。
看到了一个写的很好的关于bash和Zsh的文章: https://xiaozhou.net/learn-the-command-line-iterm-and-zsh-2017-06-23.html

切换bash

1
chsh -s /bin/bash

切换zsh

1
chsh -s /bin/zsh

zsh、oh-my-zsh以及oh-my-zsh插件

Posted on 2020-06-26 | In Tools , zsh、oh-my-zsh、oh-my-zsh插件、iTerm2 | 0 comments | Visitors:

什么是Zsh

Zsh是一款强大的虚拟终端,既是一个系统的虚拟终端,也可以作为一个脚本语言的交互解析器。

Zsh的一些特性:

  • 兼容bash
  • 各种补全
  • 历史纪录功能
  • 多个终端会话共享历史记录

    什么是Oh My Zsh

    Oh My Zsh是一款社区驱动的命令行工具,正如它的主页上说的,Oh My Zsh 是一种生活方式。它基于zsh命令行,提供了主题配置,插件机制,已经内置的便捷操作。给我们一种全新的方式使用命令行。

    安装

    1
    sh -c "$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"

    查看oh-my-zsh插件

    安装好 zsh 和 oh-my-zsh 后,Oh My Zsh目录结构进入~/.oh-my-zsh目录后,看看该目录的结构
    1
    $ ls ~/.oh-my-zsh

    lib 提供了核心功能的脚本库
    tools 提供安装、升级等功能的快捷工具
    plugins 自带插件的存在放位置
    templates 自带模板的存在放位置
    themes 自带主题文件的存在放位置
    custom 个性化配置目录,自安装的插件和主题可放这里

可以进入~/.oh-my-zsh的文件夹下的plungins查看oh-my-zsh的所有的插件

vim添加oh-my-zsh插件

vim 打开命令

1
vim .zshrc

找到plugins =()
添加插件即可
例如

1
2
3
4
 plugins=(
git
history-substring-search
)

SecureCRT / FX 8.0.0( build 1063 )for Windows 破解版

Posted on 2020-06-26 | In Tools , SecureCRT , windows | 0 comments | Visitors:

SecureCRT / FX 8.0.0( build 1063 )for Windows 破解版

  • By Ricky

  • Under Software

| 如需注册 @ccie.engineer、@ccde.engineer、@ccar.engineer、@hcie.engineer、@rhce.engineer 和 @cissp.engineer 邮箱,请点击这里。 |

1、应用介绍:

SecureCRT 是一款 Windows 上专业的终端 SSH 工具,类似于 Windows 中的 Putty ,SecureCRT 支持 SSH1 、SSH2 、Telnet 等远程连接,同时具有很多实用和专业的辅助功能,支持广泛的终端仿真、文件传输、脚本等,非常的优秀!

2、破解方法:

7.3.4 & 8.0.0

  1. 安装好 SecureCRT 软件;
  2. 确保 SecureCRT 软件处于关闭状态;
  3. 将注册机(注册机文件在压缩包里,文件名一般是 keygen.exe )复制到 SecureCRT 软件的安装目录下,安装目录默认是:C:\Program Files\VanDyke Software\SecureCRT\ ;
  4. 运行注册机,点击 Patch 按钮,此时会让你替换掉两个可执行文件(分别是 SecureCRT.exe 和 LicenseHelper.exe ),在弹出的窗口中先选择 SecureCRT.exe ,然后再选择 LicenseHelper.exe 即可完成替换,替换是否成功是会有提示的;
  5. 最后打开 SecureCRT 软件,此时会弹出一个输入 key 的页面,什么都不输入,点击 Continue ,再点击 Enter License Manually 就会看到输入 Name 和 Company 等信息的页面了,在这个页面输入注册机上显示的信息即可激活 SecureCRT 软件(在注册机上点击 Generate 按钮即可重新生成这些信息)。

3、下载链接:

(注:主链接下载服务器位于中国境内的阿里云数据中心华南区,每月大约有 100 GB 的下载流量,超量后会停止提供下载服务;备用链接下载服务器位于美国境内,为私有云,流量充足)

SecureCRT 8.0.0( build 1063 )for Windows :SecureCRT_8.0.0.7z(百度云盘,备用链接)
SecureCRT 7.3.4 for Windows :SecureCRT_7.3.4.7z(百度云盘,备用链接)

1
2
3
4
md5sum :

1f1d6c12830ccc1915b37840c4a3de58 SecureCRT_7.3.4.7z
e8cade759ada7112a18c7291c951444e SecureCRT_8.0.0.7z

设置密码记录按钮
view-> button bar

view
 button bar 勾选上(会显示在操作界面底部)
按此图配置
每次输入固定密码的时候可以点击即完毕,非常方便

<1234>
Amy Chen

Amy Chen

All problems in computer science can be solved by another level of indirection. -by David John Wheeler

36 posts
28 categories
31 tags
RSS
GitHub E-Mail Skype 简书
© 2021 Amy Chen
Powered by Hexo
|
Theme — NexT.Pisces v5.1.4