32

有没有办法将提交推送到远程 git 存储库,而无需先对该存储库进行本地克隆?

我有一个远程 repo 的有效 URL,我知道文件的路径,我要做的就是将文件的更新版本推送到主服务器上。理想情况下,我希望它适用于任何有效的远程 repo URL,但如果它仅适用于基于 https 的 git URL,它仍然会有所帮助。

我猜这是不可能的,因为根据How to "git show" on a remote repo?. 但我希望有一种解决方法可以使用一些较低级别的 git 命令。

4

7 回答 7

14

不可能的。但是由于预期提交只需要一个提交作为其父提交,因此可以使用所谓的“浅层克隆”并仅获取您需要的分支的提示提交。这只会从远程带来最少量的对象。查找 的--depth命令行选项git clone

于 2013-04-18T09:20:26.163 回答
10

是的,您可以使用标记推送新版本

按照这个步骤

在您的新项目根目录中

  1. git init
  2. git remote add origin git@github.com:yourusername/yourpoject
  3. git tag -a v2.0 -m 'version 2.0'
  4. git add .
  5. git commit -m "New Version 2.0 :rocket:"
  6. git push -u origin v2.0

现在您的新项目有了一个名为 v2.0 的新分支,并且您的主分支保持不变。之后,如果你不想,你可以在你的 github 项目设置中更改你的默认分支。

于 2017-09-29T03:20:35.253 回答
4

刚发现这个问题,想到了更新。

如果你使用 github,只需在你的 repo url 前加上https://gitpod.io#

这是一项允许您在线更新存储库的服务,因此您无需在本地克隆即可更新文件。

于 2018-09-12T08:54:09.477 回答
2

不,我不认为这是可能的。您需要克隆整个存储库才能使其正常工作。Git 需要了解所有文件并.git正确完成其工作。这就是为什么你不能像那样推送任意文件。

于 2013-04-18T08:13:08.750 回答
2

好吧,如果您使用 GitHub,那么您可以使用 GitHub API
https://developer.github.com/v3/repos/contents/#create-or-update-a-file轻松做到这一点

基本上你这样做:

  1. 创建 OAuth 应用程序并获取访问令牌
    https://developer.github.com/apps/building-oauth-apps/

  2. 向 GitHub API 发出请求:
    使用您的访问令牌 (OAuth 2.0) 设置授权标头
    PUT https://api.github.com/repos/:owner/:repo/contents/:path
    与 JSON 正文如下:

{
  "message": "my test commit through API",
  "content": "QmFzZTY0IGVuY29kZWQgY29udGVudCBoZXJl",
  "sha": "cd220ncv229f2e4a95bce426ff48b1ae6b885b3a42"
}

其中:
message - 你的提交消息
内容- Base64 格式编码的更新内容
sha - 用于更新文件的 sha,你可以通过 API 请求获取它
GET https://api.github.com/repos/:owner/:repo/contents/ :小路

:owner - 存储库所有者
:repo - 存储库名称
:path - 存储库中文件的路径

示例请求:
https ://api.github.com/repos/nodejs/node/contents/README.md

于 2019-10-22T20:54:35.247 回答
0

@algal,对于您的特定用例,您可能可以使用子模块(http://git-scm.com/docs/git-submodule)。您可以克隆并提交到子模块,而无需克隆可能包含您提到的“大量”代码的“超级模块”。超级模块可以参考您提到的配置信息的子模块。

于 2014-01-11T00:34:14.957 回答
0

如果你使用 Github,你可以使用Github Web Editor。在不克隆本地存储库的情况下更新文件的最简单方法是:

  1. 在浏览器中转到 Github 存储库
  2. 然后,按.

您应该会看到 Visual Studio Code 在您的浏览器上运行。然后,创建文件夹或从您的计算机拖放文件

要保存更改,请按:Ctrl + Shift + G或单击左侧栏中的“源代码管理”选项,然后提交更改。

于 2021-10-27T04:15:02.273 回答