如何将命令行中的内容导入到新的Github Gist?

25

我不知道这个已经存在了没有,但我很想能够做到:

$ cat mygist.js | gh new gist

让它返回URL(并可能将其复制到剪贴板/在浏览器中打开)。


1
那是个很酷的想法 =) 如果它还不存在,我认为我可以在有时间时编写一个脚本来实现。 - sampson-chen
没有一种真正简单的方法来完成这个常见任务。 - jacktrades
现在可以使用 cat cool.txt | gh gist create 命令创建 Gist。https://cli.github.com/manual/gh_gist_create - Johan Baaij
6个回答

29

看起来 GitHub 有一个简单的 REST API,包括用于创建 Gists的方法。只是为了好玩:

$ curl -X POST \
    --data-binary '{"files": {"file1.txt": {"content": "Hello, SO"}}}' \
    https://api.github.com/gists

这成功创建了此Gist。我猜这足以让你开始了。


有没有办法使用文件名而不是“Hello, SO”来将文件流到Gist? - kirill_igum
@kirill_igum:你可以将$(cat /home/user/filename)放在Hello, SO的位置(但要保留双引号)。您还需要用双引号替换整个JSON字符串周围的单引号,并转义所有双引号。 - atomictom
1
使用 curl -u user:pass ... 也会确保gist归属于“你”。 - Peter V. Mørch

23

2
请注意,仅链接答案是不被鼓励的,SO答案应该是寻找解决方案的终点(而不是另一个参考站点,随着时间的推移往往会变得陈旧)。请考虑在此处添加独立的摘要,将链接作为参考。 - kleopatra
3
在尝试上传任何代码片段之前,请务必运行gist --login。否则,您将以匿名用户身份上传代码片段。 - Meredith

3
这是一个简单的bash脚本,它可以将文件名转换为gist。
function msg() {
  echo -n '{"description":"","public":"false","files":{"file1.txt":{"content":"'
  awk '{gsub(/"/,"\\\""); printf "%s\\n",$0}' "$1"
  echo '"}}'
}

[ "$#" -ne 1 ] && echo "Syntax: gist.sh filename" && exit 1
[ ! -r "$1" ] && echo "Error: unable to read $1" && exit 2

msg "$1" | curl -v -d '@-' https://api.github.com/gists

注意:gist会回复整个帖子的正文,因此如果文件很大,建议只提取回复中相关部分的内容。


我在执行此操作时遇到了400错误,“解析JSON出现问题”。 - andreas-h
1
显然,我只用一行代码片段完成了这个,换行符也需要转义,已更新帖子。 - stt

1
如Ronie上面所说,有一个名为gist的gem提供了一个可以从终端使用的gist命令,用于将内容上传到https://gist.github.com/
要上传a.rb的内容,只需执行以下操作:
gist a.rb

更多信息 http://defunkt.io/gist/


0

有着相同的愿望,我发现了https://www.npmjs.com/package/gistup,并且fork了这个仓库到https://github.com/CrandellWS/mkg,因为开发者不想支持Windows,而当时使用的操作系统正是Windows。所以我重新设计了npm包,使其能够在Windows、Linux和Apple上运行...

完整的源代码可以在GitHub上找到: https://github.com/CrandellWS/mkg

使用npm进行安装非常简单

npm install -g mkg

使用方法详见npmjs软件包页面: https://www.npmjs.com/package/gistup

安装后,只需cd到您想要从中创建gist的任何目录...(请记住,Gists没有子文件夹)

然后运行以下命令:

mkg

它将在浏览器中打开您的新要点...除此之外,您还可以像正常的git一样控制它...只是没有子文件夹...

https://dev59.com/Z1sX5IYBdhLWcg3wRNjK#41233970


0
我喜欢使用的超级简单的命令将diff转换为gists:

git diff origin master -U15 | gist -t diff

其中15是更改前后可有的行间距(因此更容易查看较大文件中的差异)。

-t 是类型标志。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接