使用isomorphic-git从浏览器向GitHub进行git push操作
请简述一下。
根据 isomorphic-git 的 README,由于 GitHub 不允许从浏览器中使用 git push,因此无法通过浏览器进行 git push。但通过服务器绕过了 cors 的限制,成功实现了 git push。
做法 (yà fǎ)
-
- cors-buster を使って無理矢理 cors を迂回する https://cors-buster-tbgktfqyku.now.sh/
git プロトコルではなく https を使う
将 GitHub 上的 https 地址通过 cors-buster 远程注册。
这样的感觉
[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
ignorecase = true
precomposeunicode = true
[remote "origin"]
url = https://github.com/mizchi-sandbox/igit-playground.git
fetch = +refs/heads/*:refs/remotes/origin/*
[remote "origin-proxied"]
url = https://cors-buster-tbgktfqyku.now.sh/github.com/mizchi-sandbox/igit-playground
fetch = +refs/heads/*:refs/remotes/origin/*
原始的是平时的。经过代理的是这次要使用的URL。
const git = require("isomorphic-git");
const path = require("path");
const fs = require("fs");
const repo = {
dir: ".",
fs
};
const main = async () => {
console.log("start");
let pushResponse = await git.push({
...repo,
remote: "origin-proxied",
ref: "master",
authUsername: process.env.GITHUB_TOKEN,
authPassword: process.env.GITHUB_TOKEN
});
console.log(pushResponse);
console.log("done");
};
main();
获取GitHub的个人访问令牌。可通过搜索引擎获得,略去具体步骤。
提供 GITHUB_TOKEN 并运行
> ~/s/igit-playground on master env GITHUB_TOKEN=<your-toke> node main.js
start
{ ok: [ 'unpack', 'refs/heads/master' ] }
done
完成了。
这里的实际推送的存储库是 https://github.com/mizchi-sandbox/igit-playground