是否可以将git remote url设置为存储库中的子文件夹?

时间:2018-05-21 15:08:02

标签: git github

对于repo(比如说“test”),其文件夹结构为

├──项目1 ├──项目2
├──Project3

我可以为project1设置远程网址吗?

4 个答案:

答案 0 :(得分:0)

不,是的。也就是说,你可以设置这个,但它不会做你想要的,无论是什么。

远程只是一个充当密钥的短名称:

  • origin => remote.origin.urlremote.origin.fetch
  • xyz => remote.xyz.urlremote.xyz.fetch

等等。您可以将每个此类密钥的网址设置为您喜欢的任何内容:https://example.com/path/to/repo/local/pathjellybeans或您喜欢的任何内容,但的内容使用此值为git fetchgit pushgit ls-remote。这些都与给定URL处的另一个Git存储库联系并来回传输提交(而不是文件),或者在git ls-remote的情况下,告诉您可用的提交和分支名称。< / p>

由于git fetchgit push传输整个提交,文件会随之提交,但是他们会在提交中为您提供的名称

但是,您可以在Project1中进行仅包含 文件的提交。检查这样的提交将删除所有Project2Project3文件,然后检出包含所有带回来的文件的提交所有Project2Project3个文件。但是当您运行git pushgit fetch时,您可能会发送和接收包含所有文件的提交以及仅包含的所有提交 Project1个文件,这可能不是一个好主意。

如果您将每个项目存储在一个单独的Git存储库中,那么这可能会让您获得所需的内容。虽然我通常建议避免使用子模块,但您可以将这些存储库中的每一个都设置为单个超级项目的子模块,该子模块除了协调所有子模块之外什么都不做;这条特殊的道路是可行的。

答案 1 :(得分:0)

是。您可以。使用GitHub的子模块:https://blog.github.com/2016-02-01-working-with-submodules/

答案 2 :(得分:0)

为了为Project 1创建远程存储库,我认为您需要首先将其设置为本地的单独存储库。正如torek指出的那样,在git中“远程”映射到“repo” - 你可以管理你的提交只包含对Project 1目录的更新,但这不是一个单独的远程。

如果将Project 1目录设置为单独的git存储库,则可以向其添加远程。要将其放入目录树,您可以: a。)在主项目树中使用符号链接指向Project 1目录; b。)将其作为子模块添加到主项目中。

您可以在文档或Mastering Git Submodules.

中获取有关子模块的更多信息

答案 3 :(得分:0)

如果要克隆子目录,this StackOVerflow question / answer说“不”。

如果您正在寻找在子目录中提交,那么答案是肯定的。

  1. 更改子目录

  2. 然后执行以下命令以查看已完成的更改:

    git status

  3. 您将看到所做的更改,例如:

    修改:application / Email.php 修改:application / Config.php

  4. 要添加更改,请在命令行执行此操作:

    git add application / *

  5. 按如下方式提交更改:

    git commit -m“添加电子邮件支持应用程序”

  6. 当您使用GitHubGitLab或类似平台时,请将更改推送到远程存储库:

    git push origin master

  7. 最后一步,我假设你已经很好地配置了Git并且你知道它是如何工作的。否则,请使用this tutorial开始。