独书先生 Menu

git创建仓库提交代码

创建一个仓库后

# Git global setup
git config --global user.name "独书先生"
git config --global user.email "1414556676@qq.com"

# Create a new repository
git clone ssh://git@github.com/DuShuSir/openSource.git
cd jystaticft
touch README.md
git add README.md
git commit -m "add README"
git push -u origin master

# Push an existing folder
cd existing\_folder
git init
git remote add origin ssh://git@github.com/DuShuSir/openSource.git
git add .
git commit -m "Initial commit"
git push -u origin master

# Push an existing Git repository**
cd existing\_repo
git remote rename origin old-origin
git remote add origin ssh://git@github.com/DuShuSir/openSource.git
git push -u origin --all
git push -u origin --tags

删除GitHub中的所有提交历史记录

删除.git文件夹可能会导致git存储库中的问题。如果要删除所有提交历史记录,但将代码保持在当前状态,可以按照以下方式安全地执行此操作:

  1. 尝试 运行 git checkout –orphan latest_branch
  2. 添加所有文件 git add -A
  3. 提交更改 git commit -am “commit message”
  4. 删除分支 git branch -D master
  5. 将当前分支重命名 git branch -m master
  6. 最后,强制更新存储 git push -f origin master

设置本地多账户

git init
git add .
git commit -m "init"
git remote add origin https://github.com/Dushusir/lwa.git
git remote set-url origin https://Dushusir@github.com/Dushusir/lwa.git
git config --local credential.helper store
git push -u origin master

详细理解多账户:

git多账户管理: 区分全局账户和本地账户

git tag 打标签

在commit之后

git tag -a release-v0.0.0 -m "内容"
git push origin release-v0.0.0

git 撤销 add commit 操作:

git reset HEAD .

参考

https://appsoftea.com/zh/git-init-repository-push-code/

callback Promise async 对比

需求

用最简单的示例,对比callback/Promise/async之间的演进对比,理解了callback和Promise的用法,更能体会async的方便之处,且现在推荐都使用async或者Promise和async混合使用

代码

//callback
function callbackFunc(x, callback) {
  f1(x, (err1, result1) => {
    if (err1) {
      console.error(err1);
      callback(err1);
      return;
    }
    f2(result1, (err2, result2) => {
      if (err2) {
        console.error(err2);
        callback(err2);
        return;
      }
      console.log(result2);
      callback(null, result2);
    });
  });
}

//Promise
function promiseFunc(x) {
  return f1(x)
    .then(result1 => {
      return f2(result1);
    })
    .then(result2 => {
      console.log(result2);
      return result2;
    })
    .catch(err => {
      console.error(err);
      throw err;
    });
}

//async
async function asyncFunc(x) {
  try {
    const result1 = await f1(x);
    const result2 = await f2(result1);
    console.log(result2);
    return result2;
  } catch (err) {
    console.error(err);
    throw err;
  }
}

vue no-parsing-error x-invalid-end-tag 报错

分类:vue

问题

vue + iview + eslint环境下开发,写一个<Input></Input>时报了错,提示如下:

Parsing error: x-invalid-end-tag.

原因

iView在标签渲染为原生html标签时候,因为这些标签是自闭合的,所以有end标签会报错

解决

vue cli2:

  1. 在根目录下找到.eslintrc.js – rules文件
  2. 在rules中添加一行,内容为:
  3. ‘vue/no-parsing-error’: [2, { ‘x-invalid-end-tag’: false }] // 关闭对iview end-tag 检查
  4. 重启启动服务 npm run serve / npm run dev。

vue cli3:

  1. 进入vue ui运行的http://localhost:8000管理界面
  2. 找到:配置-ESLint configuration-规则-vue/no-parsing-error, 改为关闭并保存修改
  3. 重新启动server

谷歌浏览器禁止同源策略支持跨域 | windows, Chrome 80+

问题

前端开发经常遇到跨域问题,会有同源策略的限制,保证网站安全

解决

谷歌浏览器直接禁止同源策略,亲测谷歌浏览器版本 80.0.3987.116(正式版本) (64 位)可以生效,windows环境下

步骤

  1. 找到桌面上的谷歌浏览器快捷方式,复制粘贴一个出来
  2. 右击这个复制出来的图标-点击属性
  3. 修改目标那一栏的内容,在原内容基础上加上 --disable-web-security --user-data-dir="c:/chromedev"

结果类似于:

"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --disable-web-security --user-data-dir="c:/chromedev"

4.先关闭谷歌浏览器,然后双击复制的那个图标打开谷歌浏览器,如果顶部有提示”您使用的是不受支持的命令行标记:--disable-web-security。稳定性和安全性会有所下降。”就是设置成功。

觉得不明白的小伙伴可以参考以下视频教程

原文:https://appsoftea.com/zh/disable-same-origin-policy-in-chrome/
参考:https://stackoverflow.com/questions/3102819/disable-same-origin-policy-in-chrome

阿里云服务器如何配置docker镜像加速器

购买阿里云服务器后,安装docker镜像会比较慢,这时候通常可以使用阿里云的docker镜像代理服务

第一步:

注册阿里云,并购买服务器

阿里云

第二步:

去阿里云后台的容器镜像服,查看自己的专属镜像加速器地址

容器镜像服务

第三步:

安装或者升级docker,确保docker版本高于1.10.0

docker安装

第四步:

修改守护进程daemon的配置文件/etc/docker/daemon.json

vim命令指导

  1. vim /etc/docker/daemon.json

  2. 配置

{
"registry-mirrors": ["<a href="https://4wgtxa6q.mirror.aliyuncs.com">https://4wgtxa6q.mirror.aliyuncs.com</a>"]
}
  1. service docker restart //重启docker

Nuxt VSCODE node调试

问题

Nuxt使用时是有server端的,服务端使用node, 要想启动服务端代码的调试功能, 就需要额外配置

解决方案

在编辑器里启动调试功能,用VSCODE最佳,(使用谷歌浏览器也可以,但是比较麻烦,这里暂不研究)
  Continue reading…

git多账户管理: 区分全局账户和本地账户

问题

公司使用gitlab私有仓库,开发把代码clone下来,并配置了全局账户,这样每次提交不用登陆,然后自己在github私有仓库的代码clone下来后续如何配置提交?

解决方案

针对使用https作为git地址的方法:
采用git提供的本地存储账户信息功能,把github自己的账户配置上本地登录信息.

步骤

  1. 查看项目地址
git remote -v

得到 https://github.com/XXX/YYY.git 的项目地址,XXX:为你的用户名, YYY是你的项目名, 复制下来,其实直接从github仓库中copy也一样

  1. 设置新的带用户名的地址,即在https://和github之间加上”用户名@”即可
git remote set-url origin https://XXX@github.com/XXX/YYY.git
  1. 设定本地项目的账户密码存储
git config --local credential.helper store
  1. 正常修改代码push一次,第一次会让你输入密码,之后就不用了
    git常用操作

tips:

查看是否有credential.helper

git config --global -l
git config --system -l

清除全局设置

git config --global --unset credential.helper
git config --system --unset credential.helper

我的是使用 git config --system -l 打印中包含 credential.helper=manager
说明全局已经配置

文章 github多账号如何切换? 中提到要把全局配置unset掉,我没弄,本地仓库也可以正常push,所以有什么细节可以参考下原文

https://appsoftea.com/zh/git-multiple-account/
引用自: https://www.zhihu.com/question/23028445 感谢!

nuxt sass全局引入不起作用bug

问题

nuxt 全局引入sass时,官方例子有bug, github上已经有各种讨论,有很多方法是旧版本的解决方案,无法使用

解决方案

基于 nuxt 2.0.0版本的解决方案

步骤一

安装npm包

npm i -D @nuxtjs/style-resources sass-loader node-sass

步骤二

配置nuxt.config.js

module.exports = {
    // Other nuxt.config.js

    modules: ['@nuxtjs/style-resources'],
    styleResources: {
        scss: [
            'assets/css/global.scss',
            'assets/css/main.scss'
        ]
    }
}

扩展

附上2.0.0之前的旧版本的配置,可能有用,未尝试,但是 2.0.0 版本没有用

步骤一

安装npm包

npm i nuxt-sass-resources-loader

步骤二

配置nuxt.config.js

module.exports = {
    // Other nuxt.config.js

    modules: [
        [
            'nuxt-sass-resources-loader', 
            [
                'assets/css/global.scss',
                'assets/css/main.scss'
            ]åç
        ]
    ]
}

完全卸载node npm

如何从Windows中删除Node.js

1.开始-搜索: node – 点击 uninstall node.js,  或者 从卸载程序卸载程序和功能。

2.重新启动(或者您可能会从任务管理器中杀死所有与节点相关的进程)。

3.寻找这些文件夹并删除它们(及其内容)(如果还有)。根据您安装的版本,UAC设置和CPU架构,这些可能或可能不存在:

C:\Program Files (x86)\Nodejs
C:\Program Files\Nodejs
C:\Users{User}\AppData\Roaming\npm(或%appdata%\npm)
C:\Users{User}\AppData\Roaming\npm-cache(或%appdata%\npm-cache)

4.检查您的%PATH%环境变量以确保没有引用Nodejs或npm存在。

5.如果仍然没有卸载,请where node在命令提示符下键入,您将看到它所在的位置 – 删除(也可能是父目录)。

6.重新启动,很好的措施。

以上就是删除node、卸载npm的全部方法了,通常,我们还会遇到安装npm模块报错,npm install安装卡住等情况,可以参照这篇博文 彻底解决npm install卡住不动npm安装报错最全指南

注意

小编经过多年的实践得到一个经验,不仅仅是处理上面说的npm安装问题,还有google搜索一些技术问题,一般来说谷歌的搜索结果更好,还有一些国外的技术网站分享的知识一般比较前沿,比如medium就必须翻墙才能上,想关注Twitter大佬也必须有梯子,大家也肯定遇到过GitHub clone开源项目大的项目基本clone不下来的情况。。。等等。

所以小编的经验是,每一个开发者都必须得有一个稳定可靠的梯子软件才能顺畅的开发。一个稳定的梯子可能可以解决你某个问题90%的部分,节省不少时间,可以说是程序员必备的软件,这里推荐笔者用过的 ExpressVPN

至于为什么选择Express VPN可以看这一篇解释:好用的VPN推荐

更多npm教程:

参考自: https://appsoftea.com/zh/uninstall-node-npm/, 感谢!

v-for id重复问题

vue中v-for 使用i 指定了唯一key,且v-for的组件内部又嵌套了v-for的组件,id会有重复的问题,

这里分享个小技巧,加前缀防止相同的id

<div v-for="(item, i) in items" :key="i"></div>

<div v-for="(item, i) in items2" :key="`A-${i}`"></div>

<div v-for="(item, i) in items3" :key="`B-${i}`"></div>