【问题标题】:Git - How to push new files to master without cloningGit - 如何在不克隆的情况下将新文件推送到 master
【发布时间】:2018-07-02 19:33:38
【问题描述】:

我陷入了一个奇怪的困境。我要克隆的存储库太大,所以我一直在使用 sparse-checkout 来获取我需要的特定文件和文件夹。以下是我执行此操作的说明:Is it possible to do a sparse checkout without checking out the whole repository first?

一个例子:我能够从存储库中签出文件夹 1 和文件夹 2。

Repository   
--> Folder1
--> Folder2

我现在需要将包含文件的新文件夹保存到存储库中。做这个的最好方式是什么?

它的结构必须是这样的:

    Repository   
    --> Folder1
    --> Folder2
    --> NewFolder

【问题讨论】:

  • 标准的 git 工作流应该可以工作(git addgit commit,...),即使是稀疏的结帐。您是否尝试过并遇到了问题?
  • 我想我遇到的问题是我无法进行稀疏签出,因为我要签出的 NewFolder 的路径不存在。
  • 根据我上面链接的说明,我尝试执行“echo”NewFolder/*”> .git/info/sparse-checkout”和“git checkout master”但它返回“错误:稀疏结帐离开工作目录中没有条目”。
  • git add, git commit, git push 在稀疏存储库中为我工作,无需将新目录添加到 .git/info/sparse-checkout

标签: git git-commit git-checkout


【解决方案1】:

我将其移至答案,因为我认为这将有助于我向您展示我的建议,以便您可以告诉我我是否不理解您。

我要克隆的存储库太大,所以我一直在使用 sparse-checkout 来获取我需要的特定文件和文件夹。

请注意,稀疏结帐仅部分有助于解决此问题!稀疏结帐仅控制工作树中显示的内容;您仍在克隆整个存储库。

一个例子:我能够从存储库中签出文件夹 1 和文件夹 2。

我假设您的意思是您已经对这两个文件夹执行了稀疏签出:

$ git clone --no-checkout https://git.example.com/myrepository
$ cd myrepository
$ git config core.sparseCheckout true
$ echo -e 'Folder1\nFolder2' > .git/info/sparse-checkout
$ git checkout master

所以你的工作目录看起来像:

$ ls
Folder1 Folder2

您想创建一个新文件夹。您只需添加和填充文件夹即可:

$ mkdir newfolder
$ echo 'Hello world' > newfolder/newfile
$ git add newfolder
$ git commit -m 'added a new folder'

【讨论】:

  • 谢谢。这真的很有帮助。看起来我可以正常提交文件夹和文件。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-21
  • 2011-05-11
  • 2021-02-09
  • 2013-11-06
  • 2018-12-02
  • 2017-03-25
相关资源
最近更新 更多