这个Git问题与关于SVN的另一个问题非常相似。
我有一个包含许多大文件的仓库,并且需要将一个单独的文件添加到其中。在SVN中这很容易实现。
svn import -m "只添加一个文件" 文件名 http://路径/to/svn/repo/文件名
如何在Git中完成这个简单的任务?
这个Git问题与关于SVN的另一个问题非常相似。
我有一个包含许多大文件的仓库,并且需要将一个单独的文件添加到其中。在SVN中这很容易实现。
svn import -m "只添加一个文件" 文件名 http://路径/to/svn/repo/文件名
如何在Git中完成这个简单的任务?
对于GitHub(而不是git本身),GitHub API 提供了一种在不克隆的情况下创建文件的方式:
https://developer.github.com/v3/repos/contents/#create-a-file
PUT /repos/:owner/:repo/contents/:path
# Parameters #
----------------------------------------------------------------
Name Type Description
------ ------ -----------------------------------------------
path string Required. The content path.
message string Required. The commit message.
content string Required. The new file content, Base64-encoded.
branch string Branch name. Default: repo's default branch.
最简JSON输入示例:
{
"message": "my commit message",
"content": "bXkgbmV3IGZpbGUgY29udGVudHM="
}
curl
等工具将其发送到https://api.github.com/repos/:owner/:repo/contents/:path
。如果成功,您将获得返回的JSON响应,其中包括创建文件的GitHub URL。也可以在不克隆的情况下进行更新:https://developer.github.com/v3/repos/contents/#update-a-file。该存储库包含一系列相当臃肿的二进制文件。
这不是Git存储库的设计目的,如我在这里所解释的那样。
你不能在没有先获取的情况下推送某些东西,因此,除非你的存储库托管在支持通过其Web界面添加文件的服务中(像GitHub一样,如评论所述heinrich5991),否则你将无法导入单个文件。
一个替代方案是有一个专用服务器随时托管完整副本的存储库,你可以在其中添加一个文件,然后从中推送到目标存储库。
无法这样做。我刚刚进行了以下测试:
mkdir hello_independent
(注意:“hello”是我以前的存储库的名称)git init
(注意:在此处创建一个空白存储库)git remote set-url origin https://github.com/solio/GitPractice.git
(注意:将本地存储库指向远程存储库。)vim newfilefromindependentfolder.md
(注意:添加一个新文件)git add --a
git commit -m "test commit from independent folder."
git push origin master
(注意:此操作是关键)它会显示以下错误:(很抱歉,我没有10个声望所以无法上传我的操作和提示消息的图像)
这是我对消息的理解:当我这样做时,有两个不同的独立工作流程,它们之间没有任何关系。因此,当您想要将独立文件提交到远程存储库时,必须合并本地存储库和远程存储库。因此,解决此问题的最佳方法是git clone远程存储库。