点击在线阅读,体验更好 | 链接 |
---|---|
现代JavaScript高级小册 | 链接 |
深入浅出Dart | 链接 |
现代TypeScript高级小册 | 链接 |
linwu的算法笔记📒 | 链接 |
前言
上星期四,我像往常一样起床上班,地铁上收到了微信消息
这时候就感觉到不对劲了,到了公司我登录了自己的github,发现被封了
毫无征兆,我的gmail也没有收到github邮箱。
因为这个github账号我一直用来存放我的网站资料以及blog
,所以很多issue都在里面,另外还有部分图床和博客示例
,这个被封禁,所有资料都迁移不了
缘由
网上查了一圈,发现github被封,很少能申诉成功的,所以我给官方发了一封邮件,想看看是什么原因导致的,避免后续再出现类似的问题
给官方回了一个邮件后,过了半个小时我收到了回复
原来问题是这样,因为我之前找某宝开通了copilot学生认证
,导致被github查到封禁了,至于之所以找某宝,是因为我没有visa卡
支付起来麻烦,又想体验copilot
,没办法才出此下策,所以copilot学生认证
还是不要绑定自己的github账号吧
迁移
封都已经封了,这时候就得统计损失了,尽量挽回
所幸我很多仓库本地都有备份,重新注册了一个github账号上传就行,为此我还专门写了些脚本
备份star
很多同学都会把star当做书签收集
这时候可以通过访问github api进行备份
https://api.github.com/users/[username]/starred
批量备份issue到本地
const fs = require('fs');
const axios = require('axios');
const sanitize = require('sanitize-filename');
const {
githubRepoOwner, githubRepoName, githubAccessToken } = require('./config');
async function getIssues() {
let allIssues = [];
let page = 1;
let perPage = 300; // 每页返回100个issue,根据实际情况可以适当调整
try {
while (true) {
const response = await axios.get(`https://api.github.com/repos/${
githubRepoOwner}/${
githubRepoName}/issues`, {
params: {
page,
per_page: perPage
},
headers: {
Authorization: `Bearer ${
githubAccessToken}`
}
});
const issues = response.data;
if (issues.length === 0) {
break; // 退出循环,表示已获取所有issue数据
}
allIssues = allIssues.concat(issues);
page++;
}
return allIssues;
} catch (error) {
throw new Error(`Error fetching issues: ${
error.message}`);
}
}
async function saveIssueAsMarkdown(issue, directory) {
const markdownContent = issue.body;
const fileName = `${
directory}/${
sanitize(issue.title)}.md`;
fs.writeFileSync(fileName, markdownContent);
}
async function main() {
try {
const issues = await getIssues();
// Create a directory for each label
issues.forEach(