git相关操作步骤**
保存本地修改内容 git stash save xxxxxxx
查看本地保存列表 git stash list
拉取线上文件 git pull --rebase
添加所有修改 git add . //或者使用vscode逐个添加
弹出本地第一个修改 git stash pop
弹出指定修改 git stash apply stash@{2}
查询本地修改状态 git status
提交代码 git commit
a或者i切入到第一行输入模式
esc ->shift+: 切换到输入模式
wq保存并退出
git push <远程主机名> <本地分支名>:<远程分支名> 提交
git push origin br_trunk_dev:refs/for/br_trunk_dev
其他常用指令
git remote -v 查看绑定的仓库
git branch 查看本地分支
git branch -a 查看远程分支
git checkout -b 分支名 新建分支并切换至新分支
查看本地git绑定的用户名和邮箱:
git config user.name
git config user.email
git config --global --list 查看绑定列表
修改本地git绑定的用户名和邮箱(全局):
git config --global user.name “Your_userName”
git config --global user.email “Your_userEmail”
生成SSH密钥
ssh-keygen -t rsa -C '替换成自己的GitHub邮箱账号或gitHub账号'
从提示的路径找到对应的.ssh文件,打开id_rsa.pub文件,复制里面的数据,添加到gitHub中
ssh -T git@github.com,显示 You`ve successfully authenticated 表示已经绑定
常用方法
/**
* 处理时间格式
* 时间戳转换为时间格式
* data:值必填,时间戳数据 number
*/
const cutTime = (data) => {
const dt = new Date(data);
const y = dt.getFullYear();
const m = (dt.getMonth() + 1 + "").padStart(2, "0");
const d = (dt.getDate() + "").padStart(2, "0");
const hh = (dt.getHours() + "").padStart(2, "0");
const mm = (dt.getMinutes() + "").padStart(2, "0");
const ss = (dt.getSeconds() + "").padStart(2, "0");
//时间格式年月日、时分秒
return `${y}-${m}-${d} ${hh}:${mm}:${ss}`;
};
/**
* 生成指定位随机数密码
* num:位数
*/
const randomNum = (num) => {
let number = [];
for (var i = 0; i < num; i++) {
if (i === 0) {
number.push(Math.floor(Math.random() * 9 + 1));
} else {
number.push(Math.floor(Math.random() * 10));
}
}
return number.join("");
};
/**
* 判断两个对象是否相等
*/
const equals = (obj1, obj2) => {
let o1 = obj1 instanceof Object;
let o2 = obj2 instanceof Object;
if (!o1 || !o2) {
// 如果不是对象 直接判断数据是否相等
return obj1 === obj2;
}
// 判断对象的可枚举属性组成的数组长度
if (Object.keys(obj1).length !== Object.keys(obj2).length) {
return false;
}
for (let attr in obj1) {
let a1 = Object.prototype.toString.call(obj1[attr]) == "[object Object]";
let a2 = Object.prototype.toString.call(obj2[attr]) == "[object Object]";
let arr1 = Object.prototype.toString.call(obj1[attr]) == "[object Array]";
if (a1 && a2) {
// 如果是对象继续判断
return equals(obj1[attr], obj2[attr]);
} else if (arr1) {
// 如果是对象 判断
if (obj1[attr].toString() != obj2[attr].toString()) {
return false;
}
} else if (obj1[attr] !== obj2[attr]) {
// 不是对象的就判断数值是否相等
return false;
}
}
return true;
};
/**
* 对象的深拷贝
*/
const copyObj = (obj, newObj) => {
for (let key in obj) {
if (obj[key] instanceof Array) {
newObj[key] = [];
//递归调用 继续深拷贝数组
copyObj(obj[key], newObj[key]);
} else if (obj[key] instanceof Object) {
newObj[key] = {};
//递归调用 继续深拷贝对象
copyObj(obj[key], newObj[key]);
} else {
newObj[key] = obj[key];
}
}
return newObj;
};
/**
* 处理路由
* @param {Array} routes
*/
let arr = [];
export function dealRoutes(routes, str = "") {
routes.map((item) => {
if (item.children) {
dealRoutes(item.children, str === "" ? item.path : `${str}/${item.path}`);
} else {
arr.push(`${str}/${item.path}`);
}
});
return arr;
}