如何在命令行上创建一个gist

34
我正试图从bash中创建一个gist,我已经尝试了许多版本的脚本,但都无法正常工作。这个看起来是正确的,但也不起作用。
curl -X POST -d '{"public":true,"files":{"test.txt":{"content":"String file contents"}}}' https://api.github.com/gists
我有一个名为test.txt的文件,其中包含内容我想要创建gist,但它不起作用。它显示invalid email,如果我尝试添加-u USER-u USER:PASS,仍然无法工作,并显示"message": "Problems parsing JSON"
我不知道哪里出了问题。在文档中没有提供太多信息,除了这一行:

POST /gists 正如您所看到的,我正在传递test.txt文件。

7个回答

33

最近发布了GitHub CLI。因此,您现在可以使用它。

只需将其安装到您的系统中 (https://github.com/cli/cli#installation)

验证身份(非常简单)

gh auth login

登录后,您只需按以下方式创建新的Gist:

gh gist create -d "my test gist" -f some_local_file.txt  test_gist

如需更多细节,您可以使用帮助:

gh <command> <subcommand> --help

要在NixOS上使用或与Nix软件包管理器一起使用,请使用nix-shell -p github-cli - toraritte
1
@Nickolay Kondratenko 我正在尝试将新的本地文件推送到gist,但是它给了我一个错误: failed to collect files for posting: failed to read file test_gist: open test_gist: no such file or directory gh gist create -d "Snwflake-Queries" -f Snflk_Query.sql test_gist - Karthik
1
@Karthik 那是因为 test_gist 文件不存在。你的命令应该是 gh gist create -d "Snwflake-Queries" Snflk_Query.sql - Nickolay Kondratenko
@Karthik 来自帮助:-f,--filename string 提供一个文件名用于从 STDIN 读取 - Nickolay Kondratenko
@NickolayKondratenko 非常感谢。覆盖同一文件以进行新更改的命令是什么? - Kar

15
这个问题比较老,所以我不确定它是否仍然相关。
在Ubuntu上(至少在18.04版本上),你可以尝试使用“gist”软件包,它会安装“gist-paste”命令,你可以像下面这样使用它(前提是你已经有了一个git账户):
1)获取gist OAuth2令牌(它将创建一个~/.gist文件和令牌)。你只需要这样做一次:
```bash gist --login ```
2)将代码片段粘贴到终端中并按Enter键即可:
```bash echo "Hello World" | gist-paste ```
$ gist-paste --login

然后,你可以发送你的文件,例如:
$ gist-paste your-file.txt
$ cat .emacs.d/init.el | gist-paste -t el

有许多选项:您可以发送文件类型/描述(如上面的第二个示例),删除gist,打开gist浏览器等。请参见gist-paste(1)或尝试gist-paste --help

如果您已经拥有一个gist令牌,则无需运行gist-paste --login,只需将~/.gitconfig中的oauth-token复制到~/.gist中即可。 例如,如果您在~/.gitconfig中有:

[github]
    oauth-token = foobar123

只需创建一个~/.gist文件,其中一行包含"foobar123"。

[编辑] 如果您的发行版没有提供该软件包,则可以访问以下项目页面: https://github.com/defunkt/gist


已确认在Ubuntu 16.04上工作,但我只是做了gist finename.txt。 - Aleksandar Pavić

15

我刚刚尝试过

curl -X POST -d '{"public":true,"files":{"test.txt":{"content":"String file contents"}}}' -u mgarciaisaia:mypassword https://api.github.com/gists

它起作用了:https://gist.github.com/mgarciaisaia/fa51238073eb2cf508aa

我没有看到你的命令有任何问题。


2
顺便说一句:我一直在尝试用变量替换 test.txtString file..,但由于在单引号内,它不起作用。你有什么办法可以在单引号内传递变量吗? - trbvm
1
但是,我们如何使用它来概括 file.cpp 代码片段呢? - daparic
现在它显示的是 "message": "未找到", "documentation_url": "https://developer.github.com/v3"。 - Aleksandar Pavić
此回答适用于2020年。 - Coding Edgar
我该如何从一个 .log 文件中发布内容? - Dimitri Kopriwa
1
@DimitriKopriwa,您需要将文件内容读入变量,并将其包含在有效载荷中。这意味着需要更改引号和转义。也许现在有一个新的端点? - mgarciaisaia

4
我刚开始使用http://defunkt.io/gist,它让事情变得很简单:
# upload string to file
gist -f test.txt <<< "hello string"

# upload a file
gist test.txt

这太棒了!要安装它,请使用sudo gem install gist,然后输入gist --login并将8位代码放入github.com。要写多行,请键入gist,在几行后使用CTRL-D退出。 - bomben
或者,如果您正在使用NixOS或使用Nix作为软件包管理器,请使用nix-shell -p gist - toraritte

3
我发现有同样的需求,于是找到了https://www.npmjs.com/package/gistup并fork了这个仓库到https://github.com/CrandellWS/mkg,因为开发者不想支持当时正在使用的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

它将在浏览器中打开您的新Gist...此外,您将能够像普通的Git一样从那里控制它...只是没有子文件夹...


3
截至2020年9月, 创建Gist是GitHub官方命令行工具gh的功能之一。
例如,在MacOS上:
brew install gh
gh auth login  # Follow steps.
gh gist create myfile.txt  # Creates a private gist.

更多选项可用。 gh gist create --help 给出以下内容:
Create a new GitHub gist with given contents.

Gists can be created from one or multiple files. Alternatively, pass "-" as
file name to read from standard input.

By default, gists are private; use '--public' to make publicly listed ones.


USAGE
  gh gist create [<filename>... | -] [flags]

FLAGS
  -d, --desc string       A description for this gist
  -f, --filename string   Provide a filename to be used when reading from STDIN
  -p, --public            List the gist publicly (default: private)

INHERITED FLAGS
  --help   Show help for command

EXAMPLES
  # publish file 'hello.py' as a public gist
  $ gh gist create --public hello.py

  # create a gist with a description
  $ gh gist create hello.py -d "my Hello-World program in Python"

  # create a gist containing several files
  $ gh gist create hello.py world.py cool.txt

  # read from standard input to create a gist
  $ gh gist create -

  # create a gist from output piped from another command
  $ cat cool.txt | gh gist create

LEARN MORE
  Use 'gh <command> <subcommand> --help' for more information about a command.
  Read the manual at https://cli.github.com/manual

如果我想要更新Gist中现有的文件,使用gh命令应该怎么做? - Kar
使用 gh gist edit {<gist ID> | <gist URL>} -f <filename> - heiner

0

你没有发布你的系统信息,所以我使用我的。

安装:

安装:winget install --id GitHub.cli

注意:安装后必须启动一个新的cli或关闭并重新启动cli,以便cli知道路径已更改。

升级:winget upgrade --id GitHub.cli

公共:gh gist create --public hello.py

私人:gh gist create hello.py

您将获得一个url,类似于这个: 简单而有效,url类似于4dad2955bffb6443792b385a972063c


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