GitHub 多账号混用方案总结(SSH + HTTPS)

一、整体方案说明

适用场景

一台设备使用两个 GitHub 账号:

  1. 账号 A(个人):纯 SSH 方式,不依赖 GitHub CLI (gh)

  2. 账号 B(工作 / 其他):纯 HTTPS 方式,由 gh 管理登录与凭据

核心优势

  • 两套认证完全隔离,不会串账号、权限混乱

  • 无需频繁执行账号切换命令,使用简单

  • 符合 GitHub 安全规范,不共用 SSH 密钥

二、关键前置规则

  1. SSH 限制

    • 一个 SSH 公钥仅能绑定一个 GitHub 账号,无法多账号共用

    • 单账号 + 默认命名密钥,**无需配置 ****\~/\.ssh/config**

    • 自定义密钥名 / 多组 SSH 密钥,才需要 \~/\.ssh/config 区分

  2. GitHub CLI (gh) 规则

    • gh 仅管理 HTTPS 协议 的登录态与 Git 凭据,和 SSH 无关

    • 可主动在 gh 中删除 SSH 对应的账号,仅保留 HTTPS 账号,环境更干净

    • 仓库使用协议决定认证方式:SSH 仓库走密钥,HTTPS 仓库走 gh 凭据

Read more

npm link, unlink, remove 摘要

npm link 是将当前目录包链接到全局
npm remove -g pka-name 是将全局的链接的 pkg-name 包移除
npm unlink pka-name 是将当前项目中软链接的包移除

vue实现点击空白关闭弹窗,模拟下拉框Dropdown

方法一: 给外层容器定义一个阻止冒泡事件 @click.stop,则该容器内的点击不会传递到外层容器,所以全局监听不到该点击事件,在该容器内部点击不会触发点击函数。当弹框出现时,点击外部空白区域,弹框关闭。

方法二: 给外层容器设置一个 ref="mian",当 visible为 true时,弹框出现。在该容器外点击 this.$refs.main.$el.contains(e.target)为 false,在容器内点击则为 true。

两种方法都需要组件挂载完毕,全局添加一个点击事件,组件注销前,将点击事件移除。

Read more

js去除url指定参数

/**
* @description Remove the specified params
* @param {array} params
* @return {string} res
*/
const handleRemoveParam = (params = []) => {
const { origin, pathname, search } = window.location;
const arr = search.substring(1).split("&");
let collect = [];

arr.forEach((item, ind) => {
params.forEach((param) => {
if (item.includes(`${param}=`)) {
collect = [...collect, ind];
}
});
});

for(let i = 0; i < collect.length; i++) {
const item = i > 0 ? collect[i] - i : collect[i];
arr.splice(item, 1);
}

const newSearch = arr.join('&');
const res = newSearch ? origin + pathname + '?' + newSearch : origin + pathname;
return res;
}

const str = handleRemoveParam(['bbb', 'aaa', 'token']);
console.log(str);

微信H5自定义分享在ios下失效的问题

ios分享失效,表现为不显示缩略图,自定义url不正确,无法获取title等

  • IOS:每次切换路由,SPA的url是不会变的,发起签名请求的url参数必须是当前页面的url(就是最初进入页面时的url)
  • Android:每次切换路由,SPA的url是会变的,发起签名请求的url参数必须是当前页面的url(不是最初进入页面时的)
Read more

git 修改本地和远程分支名称

git branch -a #查看所有分支
git branch -r #查看远程分支
git branch -vv #查看本地分支所关联的远程分支

git branch -m old_branch new_branch #重命名本地分支
git push origin :old_branch #删除远程分支
git push --set-upstream origin new_branch #推送并关联新的远程分支

CommandLineTools reinstall

xcode-select --print-path
# in my case /Library/Developer/CommandLineTools

# the next line deletes the path returned by the command above
sudo rm -rf $(xcode-select --print-path)

# install them (again) if you don't get a default installation prompt
xcode-select --install

sketch中英文切换

Sketch 54版本之后会强制使用Mac系统语言

使用Mac终端:

defaults write com.bohemiancoding.sketch3 AppleLanguages '(en)'
defaults write com.bohemiancoding.sketch3 AppleLanguages '(zh-CN)'