【问题标题】:git equivalent to `svn export` or github workaroundgit 相当于 `svn export` 或 github 解决方法
【发布时间】:2011-11-14 12:11:56
【问题描述】:

我想从 git 存储库中获取 单个文件。使用SVN,我可以使用svn export,如下:

sudo svn export http://www.example.com/repos/Trunk/pathtofile/file.ext

这只是下载文件,赤裸裸的,即没有任何存储库信息。

git 中是否有与svn export 等价的东西?

我得到的最接近的是“git show upstream/master:pathtofile/file.ext”,但这并不完全等同,因为您已经需要在 git repo 中才能使其工作。

我有另一个选择,因为我使用的是 github,所以尝试wget github 原始文件。

wget https://raw.github.com/<mygithubuser>/repo/master/pathtofile/file.ext?login=<mylogin>&token=<notsurewhattoputhere>

问题是 repo 是私有的,所以我需要提供一个令牌,但我不确定如何生成它并在 wget 中使用它?

【问题讨论】:

标签: git github


【解决方案1】:

我没有检查过,但根据this git hub page,您的身份验证令牌已在您的个人资料页面上提供。因此,假设可以选择手动将其嵌入命令中,那么我会这样做。否则,我想您需要接受它作为脚本的参数,此命令将包含在或可能包含在配置文件中。虽然我猜这两个选项都可能存在安全问题。

【讨论】:

  • 那个 github 页面看起来很有希望。不幸的是,即使我使用指定的令牌,我也无法让 wget 工作。
  • 奇怪,该页面似乎暗示基于令牌的身份验证应该在任何地方工作。不过,我自己无权访问任何私人仓库来测试任何东西。运行 wget 时是否将 URL 括在引号中?只是问一下,因为这是我经常犯的错误,我注意到上面的示例命令中缺少它们。
  • 另外,您是否尝试过提供用户名和令牌作为 POST 参数?这似乎是该链接中的示例使用 curl 的 -F 参数所做的事情
  • YES YES YES - 当我在运行 wget 时将 URL 括在引号中时,它起作用了。我不知道这是需要的。谢谢@obmarg。
  • 没问题。它是必需的,因为 shell 将 & (可能还有?)视为特殊字符,因此您需要将它们转义或将整个参数括在引号中,就像 url 包含空格一样。
【解决方案2】:

如果 repo 在 GitHub 中,那么 just use svn export!

svn export https://github.com/username/repo-name/trunk/pathtofile/file.ext

【讨论】:

  • 赞成 github svn 支持链接!这不是一个广为人知的事实。
【解决方案3】:

我不会将令牌和用户名放在查询字符串中。而是做这样的事情:

curl -F 'login=mylogin' -F 'token=mytoken' https://raw.github.com/<mygithubuser>/repo/master/pathtofile/file.ext > /tmp/file.ext

至于为什么不应该放在QSthis is a good explanation

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-09-14
    • 2010-10-22
    • 1970-01-01
    • 2021-05-26
    • 1970-01-01
    相关资源
    最近更新 更多