## git 常用命令。
>[warning] 命令行出现 : 按键盘 q 既可
## 创建SSH Key
```shell
$ ssh-keygen -t rsa -C "youremail@example.com"
```
>[warning] 1. Enter file which to save the key (/c/Users/你的用户名/.ssh/id_rsa): 回车键 (选择文件的存储位置)
> 2. /c/Users/你的用户名/.ssh/id_rsa already exists. Overwrite(y/n)? y (你之前的已经存在 ssh,是否覆盖?)
> 3. Enter passphrase (empty for no passphrase): 3次回车键 (输入协议中定义的密码)
> 这时你的 /c/Users/你的用户名/.ssh 目录下会有 id_rsa 文件和 id_rsa.pub 文件
## 配置用户信息
```shell
$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"
```
## 查看用配置
```shell
$ git config --list
```
>[warning] mac 下查看 .ssh 文件 终端输入 `open ~/.ssh`
## 仓库
| 命令 | 描述 |
| :---------------------- | :------------------------------------ |
| git init | 在当前目录新建一个 Git 代码库 |
| git init [project-name] | 新建一个目录,将其初始化为 Git 代码库 |
| git clone [url] | 下载一个项目和它的整个代码历史 |
>[warning] 初始化后只要出现 .git 文件夹就表示初始化成功了
## 增加/删除文件
| 命令 | 描述 |
| :------------------------------------ | :----------------------------------------------------------- |
| git add [file1] [file2] ... | 添加指定文件到暂存区 |
| git add [dir] | 添加指定目录到暂存区,包括子目录 |
| git add . | 添加当前目录的所有文件到暂存区 |
| git add -p | 添加每个变化前,都会要求确认<br/>对于同一个文件的多处变化,可以实现分次提交 |
| git rm [file1] [file2] ... | 删除工作区文件,并且将这次删除放入暂存区 |
| git rm --cached [file] | 停止追踪指定文件,但该文件会保留在工作区 |
| git mv [file-original] [file-renamed] | 改名文件,并且将这个改名放入暂存区 |
## 代码提交
| 命令 | 描述 |
| -------------------------------------- | ------------------------------------------------------------ |
| git commit -m [message] | 提交暂存区到仓库区 |
| git commit -a | 提交工作区自上次 commit 之后的变化,直接到仓库区 |
| git commit -v | 提交时显示所有 diff 信息 |
| git commit --amend -m [message] | 使用一次新的 commit,替代上一次提交<br/>如果代码没有任何新变化,则用来改写上一次 commit 的提交信息 |
| git commit --amend [file1] [file2] ... | 重做上一次 commit,并包括指定文件的新变化 |
## 查看信息
| 命令 | 描述 |
| ----------------------------------------- | ------------------------------------------------------------ |
| git status | 显示有变更的文件 |
| git log | 显示当前分支的版本历史 |
| git log --stat | 显示 commit 历史,以及每次 commit 发生变更的文件 |
| git log -S [keyword] | 搜索提交历史,根据关键词 |
| git log [tag] HEAD --pretty=format:%s | 显示某个 commit 之后的所有变动,每个 commit 占据一行 |
| git log [tag] HEAD --grep feature | 显示某个 commit 之后的所有变动,其"提交说明"必须符合搜索条件 |
| git log --follow [file] | 显示某个文件的版本历史,包括文件改名 |
| git log -p [file] | 显示指定文件相关的每一次 diff |
| git log -5 --pretty --oneline | 显示过去5次提交 |
| git shortlog -sn | 显示所有提交过的用户,按提交次数排序 |
| git blame [file] | 显示指定文件是什么人在什么时间修改过 |
| git diff | 显示暂存区和工作区的差异 |
| git diff --cached [file] | 显示暂存区和上一个 commit 的差异 |
| git diff HEAD | 显示工作区与当前分支最新 commit 之间的差异 |
| git diff [first-branch]...[second-branch] | 显示两次提交之间的差异 |
| git diff --shortstat "@{0 day ago}" | 显示今天你写了多少行代码 |
| git show [commit] | 显示某次提交的元数据和内容变化 |
| git show --name-only [commit] | 显示某次提交发生变化的文件 |
| git show [commit]:[filename] | 显示某次提交时,某个文件的内容 |
| git reflog | 显示当前分支的最近几次提交 |
## 分支
>[warning] 切换分支前必须得把当前工作区提交到版本库
| 命令 | 描述 |
| -------------------------------------------------- | -------------------------------------------- |
| git branch | 列出所有本地分支 |
| git branch -r | 列出所有远程分支 |
| git branch -a | 列出所有本地分支和远程分支 |
| git branch [branch-name] | 新建一个分支,但依然停留在当前分支 |
| git checkout -b [branch] | 新建一个分支,并切换到该分支 |
| git branch [branch] [commit] | 新建一个分支,指向指定 commit |
| git branch --track [branch] [remote-branch] | 新建一个分支,与指定的远程分支建立追踪关系 |
| git checkout [branch-name] | 切换到指定分支,并更新工作区 |
| git checkout - | 切换到上一个分支 |
| git branch --set-upstream [branch] [remote-branch] | 建立追踪关系,在现有分支与指定的远程分支之间 |
| git merge [branch] | 合并指定分支到当前分支 |
| git cherry-pick [commit] | 选择一个 commit,合并进当前分支 |
| git branch -d [branch-name] | 删除分支 |
| git push origin --delete [branch-name] | 删除远程分支 |
## 标签
| 命令 | 描述 |
| ------------------------------------ | -------------------------- |
| git tag | 列出所有 tag |
| git tag [tag] | 新建一个 tag 在当前 commit |
| git tag [tag] [commit] | 新建一个 tag 在指定 commit |
| git tag -d [tag] | 删除本地 tag |
| git push origin :refs/tags/[tagName] | 删除远程 tag |
| git show [tag] | 查看 tag 信息 |
| git push [remote] [tag] | 提交指定 tag |
| git push [remote] --tags | 提交所有 tag |
| git checkout -b [branch] [tag] | 新建一个分支,指向某个 tag |
## 远程同步
| 命令 | 描述 |
| -------------------------------------------------- | -------------------------------------- |
| git fetch [remote] | 下载远程仓库的所有变动 |
| git remote -v | 显示所有远程仓库 |
| git remote show [remote] | 显示某个远程仓库的信息 |
| git remote add [shortname] [url] | 增加一个新的远程仓库,并命名 |
| git pull [remote] [branch] | 取回远程仓库的变化,并与本地分支合并 |
| git pull origin master --allow-unrelated-histories | 允许不相关历史提交,并强制合并 |
| git push [remote] [branch] | 上传本地指定分支到远程仓库 |
| git push [remote] --force | 强行推送当前分支到远程仓库,即使有冲突 |
| git push [remote] --all | 推送所有分支到远程仓库 |
## 撤销
| 命令 | 描述 |
| ---------------------------- | ------------------------------------------------------------ |
| git checkout [file] | 恢复暂存区的指定文件到工作区 |
| git checkout [commit] [file] | 恢复某个 commit 的指定文件到暂存区和工作区 |
| git checkout . | 恢复暂存区的所有文件到工作区 |
| git reset [file] | 重置暂存区的指定文件,与上一次 commit 保持一致,但工作区不变 |
| git reset --hard | 重置暂存区与工作区,与上一次 commit 保持一致 |
| git reset [commit] | 重置当前分支的指针为指定 commit,同时重置暂存区,但工作区不变 |
| git reset --hard [commit] | 重置当前分支的 HEAD 为指定 commit,同时重置暂存区和工作区,与指定 commit 一致 |
| git reset --keep [commit] | 重置当前 HEAD 为指定 commit,但保持暂存区和工作区不变 |
| git revert [commit] | 新建一个 commit,用来撤销指定 commit<br/>后者的所有变化都将被前者抵消,并且应用到当前分支 |
| git stash / git stash pop | 暂时将未提交的变化移除,稍后再移入 |
>[warning] commit 只需要前7位就可以了
## 忽略文件配置(.gitignore)
1、配置语法:
> 以斜杠“/”开头表示目录;
>
> 以星号“*”通配多个字符;
>
> 以问号“?”通配单个字符
>
> 以方括号“[]”包含单个字符的匹配列表;
>
> 以叹号“!”表示不忽略(跟踪)匹配到的文件或目录;
此外,git 对于 .ignore 配置文件是按行从上到下进行规则匹配的,意味着如果前面的规则匹配的范围更大,则后面的规则将不会生效;
2、示例:
(1)规则:fd1/*
说明:忽略目录 fd1 下的全部内容;注意,不管是根目录下的 /fd1/ 目录,还是某个子目录 /child/fd1/ 目录,都会被忽略;
(2)规则:/fd1/*
说明:忽略根目录下的 /fd1/ 目录的全部内容;
(3)规则:
/*
!.gitignore
!/fw/bin/
!/fw/sf/
说明:忽略全部内容,但是不忽略 .gitignore 文件、根目录下的 /fw/bin/ 和 /fw/sf/ 目录;
- Svg
- 01.svgIcon组件封装
- 02.clipPathSprites小图标
- html5
- 01.属性-input
- 02.属性-contenteditable
- 03.属性-draggable
- 04.标签-语义化标签
- 05.标签-canvas
- 06.标签-svg
- 07.标签-video
- 11.API-requestAnimationFrame
- 12.API-Storage
- css3
- 01.selector
- 02.border
- 03.background
- 04.color-gradient
- 05.text
- 06.box
- 07.flex
- 08.transition
- 09.cubic-bezier
- 10.animation
- 11.step
- 12.transform-rotate
- 13.transform-scale
- 14.transform-skew
- 15.transform
- 16.matrix
- 17.性能优化
- 18.css数据类型
- demo-animation
- demo-step
- demo-transform
- JavaScript
- 异步加载JS
- 函数
- 函数基础
- 函数名
- 理解参数
- 默认参数值
- 参数扩展与收集
- 函数内部
- 函数属性与方法
- 函数表达式
- 递归
- 闭包
- 立即调用的函数表达式
- 私有变量
- 函数的应用
- JS基础
- JS语言概述
- 数据与数据类型
- 操作符
- 变量声明
- 通过变量使用原始值与引用值
- 确定类型
- 标识符查找
- 执行上下文与作用域
- 垃圾回收
- Date
- 基本引用类型
- 包装类型-Boolean
- 包装类型-Number
- 包装类型-String
- 单例内置对象-Global
- 单例内置对象-Math
- 模版字符串
- try-catch与错误对象
- 对象
- 理解对象
- 创建对象
- 原型模式
- 继承
- 类
- 符号
- 普通符号
- 共享符号
- 知名符号
- 解构
- 对象解构
- 数组解构
- 数组
- 数组概述
- 数组方法
- 定型数组
- Map和Set
- Map
- Set
- WeakMap
- WeakSet
- 迭代器和生成器
- 迭代器
- 生成器
- 迭代与扩展操作
- 代理与反射
- 代理
- 反射
- 代理模式
- 异步处理
- 事件循环
- 事件和回调函数的缺陷
- 异步处理的通用模型
- Promise的基本使用
- Promise的API
- Promise的连锁与合成
- Promise扩展
- 异步函数
- 异步函数策略
- 其他案例
- 网络请求与远程资源
- 跨源资源共享
- XMLHttpRequest对象
- FetchAPI-基本用法
- FetchAPI-常见请求模式
- FetchAPI-Headers
- FetchAPI-Request
- FetchAPI-Response
- FetchAPI-body混入
- 安全
- BOM
- 窗口
- 视口
- 导航与打开新窗口
- location对象
- 操作地址
- navigator对象
- screen对象
- history对象
- DOM
- 节点层级
- 节点层级概述
- Node类型
- Document类型
- Element类型
- Text类型
- Comment类型
- DocumentType类型
- DocumentFragment类型
- CDATASection类型
- Attr类型
- DOM编程
- 动态脚本
- 动态样式
- 操作表格
- 使用NodeList
- MutationObserver
- MutationObserver接口
- MutationObserverInit与观察范围
- 异步回调与记录队列
- 性能和内存与垃圾回收
- DOM扩展
- SelectorsAPI
- 元素遍历
- CSS类扩展
- 焦点管理
- HTMLDocument扩展
- 插入标记
- 滚动
- 专有扩展
- DOM2和DOM3
- DOM的演进
- 样式
- 元素尺寸
- 事件
- 事件流
- 事件处理程序
- 事件对象
- 事件类型
- 事件委托
- 删除事件处理程序
- 模拟事件
- 用户界面事件
- load事件
- unload事件
- resize事件
- scroll事件
- 设备事件
- orientationchange事件
- deviceorientation事件
- devicemotion事件
- 焦点事件
- 鼠标和滚轮事件
- 键盘与输入事件
- HTML5事件
- contextmenu事件
- beforeunload事件
- DOMContentLoaded事件
- readystatechange事件
- pageshow与pagehide事件
- hashchange事件
- 触摸及手势事件
- 触摸事件
- 手势事件
- vue2
- mysite项目
- 01.搭建工程
- 02.Icon组件
- 03.Pager组件
- 04.测试组件
- 05.Empty组件
- 06.ImageLoader组件
- 07.Contact组件
- 08.Menu组件
- 09.SiteAside组件
- 10.Layout组件
- 11.路由
- 12.弹出消息
- 13.获取远程数据
- 14.Home组件
- 15.vLoading指令
- 16.组件混入
- 17.组件递归
- 18.文章列表页
- 19.文章详情页-1
- 20.文章详情页-2
- 21.文章详情页-3
- 22.事件总线
- 23.文章详情页-4
- 24.文章详情页-5
- 25.图片懒加载
- 26.使用vuex
- 27.标题统一处理
- 28.关于我
- 29.项目&效果
- 30.留言板
- 31.打包结果分析
- 32.异步组件
- 33.无数据显示
- 34.404页面
- 35.vuex优化
- mysite项目后台
- 01.项目准备
- 01.核心概念
- 02.组件
- 03.插槽
- 04.动态组件
- 05.异步组件
- 06.计算属性
- 07.指令
- 08.事件处理
- 09.filter过滤器
- 10.组件生命周期
- 11.自定义指令
- 12.组件混入
- 13.$listeners
- 14.v-model
- 15.过渡和动画
- 16.keep-alive
- 17.插件
- 89.mini观察者
- 90.render
- 91.父子组件通信
- 92.虚拟dom详解
- 93.数据响应原理
- 94.diff
- 95.Vue项目优化
- 96.路由
- 97.数据共享
- 98.vuex案例
- 99.vue-cli
- vue3
- 01.搭建工程
- 02.vue3的重大变化
- 03.vite原理
- 04.效率的提升
- 05.API和数据响应式的变化
- 06.模板中的变化
- 07.组件中的变化
- 08.ReactivityApi
- 09.CompositionApi
- 10.共享数据
- 11.slot透传
- 面试题
- 网络
- js
- git
- 01.基本概览
- 02.git命令
- 03.远程分支
- 04.source tree
- 05.git部署pages
- 06.git工作流
- vscode
- 插件推荐
- 快捷键
- 正则表达式
- 正则基础
- 包管理工具
- npm
- 01.概述
- 02.包的安装
- 03.包配置
- 04.包的使用
- 05.语义版本
- 06.npm脚本
- 07.运行环境配置
- 08.其他npm命令
- 09.发布包
- yarn
- 01.yarn简介
- 02.yarn的核心命令
- 03.yarn的其他命令
- 其他包管理器
- 01.cnpm
- 02.nvm
- 03.pnpm
- 模块化
- 01.模块化发展史
- 02.CommonJS
- 03.AMD和CMD
- 04.ES6模块化
- webpack
- 核心功能
- 01.如何在浏览器端实现模块化
- 02.webpack安装与使用
- 03.模块化兼容性
- 04.编译结果分析
- 05.配置文件
- 06.devtool配置
- 07.编译过程
- 08.入口和出口
- 09.入口和出口的最佳实践
- 10.loader
- 11.plugin
- 12.区分环境
- loader-处理图片
- loader-处理样式
- plugin-添加文件列表
- 13.其他细节配置
- 计算机组成原理
- 系统总线
- 存储器
- TypeScript
- 在node中搭建ts开发环境
- 基本类型检查
- 类型别名
- 枚举
- 模块化
- 接口
- 类
- 泛型
- 类型兼容性
- 面向对象
- 装饰器
- 类型演算
- 声明文件
- TS常用配置
- 数据结构与算法
- 线性数据结构
- 排序
- 栈和队列
- 树
- 图
- 动态规划
- webApp
- 移动端基础
- 移动端适配
- 移动端事件
- 移动端手势库
- 在本地配置https证书
- h5调用本地摄像头
- h5重力加速度
- h5横竖屏切换
- h5方向变化事件
- h5获取地理信息
- 移动端常见问题
- nodejs
- nodejs-概述.md
- nodejs-全局对象
- nodejs-模块化
- nodejs-内置模块
- nodejs-文件
- nodejs-生命周期
- nodejs-组成原理
- 进程和线程
- cookie
- JWT
- CORS
- CSRF攻击
- XSS攻击
- websocket
- 缓存的基本原理
- 常见案例
- 接口文件下载xlsx
- _设置
- image