有没有办法将提交推送到远程 git 存储库,而无需先对该存储库进行本地克隆?
我有一个远程 repo 的有效 URL,我知道文件的路径,我要做的就是将文件的更新版本推送到主服务器上。理想情况下,我希望它适用于任何有效的远程 repo URL,但如果它仅适用于基于 https 的 git URL,它仍然会有所帮助。
我猜这是不可能的,因为根据How to "git show" on a remote repo?. 但我希望有一种解决方法可以使用一些较低级别的 git 命令。
有没有办法将提交推送到远程 git 存储库,而无需先对该存储库进行本地克隆?
我有一个远程 repo 的有效 URL,我知道文件的路径,我要做的就是将文件的更新版本推送到主服务器上。理想情况下,我希望它适用于任何有效的远程 repo URL,但如果它仅适用于基于 https 的 git URL,它仍然会有所帮助。
我猜这是不可能的,因为根据How to "git show" on a remote repo?. 但我希望有一种解决方法可以使用一些较低级别的 git 命令。
不可能的。但是由于预期提交只需要一个提交作为其父提交,因此可以使用所谓的“浅层克隆”并仅获取您需要的分支的提示提交。这只会从远程带来最少量的对象。查找 的--depth
命令行选项git clone
。
是的,您可以使用标记推送新版本
按照这个步骤
在您的新项目根目录中
git init
git remote add origin git@github.com:yourusername/yourpoject
git tag -a v2.0 -m 'version 2.0'
git add .
git commit -m "New Version 2.0 :rocket:"
git push -u origin v2.0
现在您的新项目有了一个名为 v2.0 的新分支,并且您的主分支保持不变。之后,如果你不想,你可以在你的 github 项目设置中更改你的默认分支。
刚发现这个问题,想到了更新。
如果你使用 github,只需在你的 repo url 前加上https://gitpod.io#。
这是一项允许您在线更新存储库的服务,因此您无需在本地克隆即可更新文件。
不,我不认为这是可能的。您需要克隆整个存储库才能使其正常工作。Git 需要了解所有文件并.git
正确完成其工作。这就是为什么你不能像那样推送任意文件。
好吧,如果您使用 GitHub,那么您可以使用 GitHub API
https://developer.github.com/v3/repos/contents/#create-or-update-a-file轻松做到这一点
基本上你这样做:
创建 OAuth 应用程序并获取访问令牌
https://developer.github.com/apps/building-oauth-apps/
向 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
@algal,对于您的特定用例,您可能可以使用子模块(http://git-scm.com/docs/git-submodule)。您可以克隆并提交到子模块,而无需克隆可能包含您提到的“大量”代码的“超级模块”。超级模块可以参考您提到的配置信息的子模块。
如果你使用 Github,你可以使用Github Web Editor。在不克隆本地存储库的情况下更新文件的最简单方法是:
.
您应该会看到 Visual Studio Code 在您的浏览器上运行。然后,创建文件夹或从您的计算机拖放文件
要保存更改,请按:Ctrl + Shift + G
或单击左侧栏中的“源代码管理”选项,然后提交更改。