【问题标题】:Is it possible to set git remote url to a sub folder in the repository?是否可以将 git remote url 设置为存储库中的子文件夹?
【发布时间】:2018-10-31 06:39:56
【问题描述】:

对于一个 repo(比如“test”),它的文件夹结构为

├── 项目1
├── 项目2
├── 项目3

我可以为 project1 设置一个远程 url 吗?

【问题讨论】:

  • 每个文件夹的 Git 遥控器没有任何意义。看起来您正在将多个项目塞进一个存储库中。 Git 旨在支持每个存储库一个项目,遵循该约定将为您简化事情。
  • 如果您可以将每个项目设置为 git 子模块,这是可行的。有关步骤,请参阅此答案 - stackoverflow.com/a/914090/866021
  • @Chris 这个项目非常小,我不想为每个项目创建 repo。这些基本上是我所有大学课程的代码。
  • @Aditya,那么您将不得不处理它的影响。单项目存储库几乎总是更好的选择(当然也有例外,例如 Google 著名的 monorepo)。

标签: git github


【解决方案1】:

如果你想克隆一个子目录,this StackOVerflow question / answer 说“不”。

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

  1. 更改子目录

  2. 然后执行以下命令,看看做了哪些改动:

    混帐状态

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

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

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

    git 添加应用程序/*

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

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

  6. 当您在GitHubGitLab 或类似平台上工作时,将您的更改推送到远程存储库:

    git push origin master

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

【讨论】:

    【解决方案2】:

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

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

    您可以在文档或Mastering Git Submodules. 中获得有关子模块的更多信息

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

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

        remote 只是一个充当键的短名称:

        • origin => remote.origin.url, remote.origin.fetch
        • xyz => remote.xyz.url, remote.xyz.fetch

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

        由于git fetchgit push 传输整个提交,文件随提交一起提供,但它们具有您在提交中给它们的名称​​ .

        但是,您可以提交包含 Project1 中的文件的提交。签出这样的提交将删除所有Project2Project3文件,然后签出包含所有文件的提交将带回所有@987654339 @ 和 Project3 文件。但是当您运行git pushgit fetch 时,您可能会发送和接收包含所有 文件的提交以及包含 @987654343 的任何提交@ 文件,所以这可能不是一个好主意。

        如果您将每个项目存储在单独的 Git 存储库中,那可能会得到您想要的。虽然我通常建议避免使用子模块,但您可以将这些存储库中的每一个都设为单个 superproject 的子模块,该子模块除了协调所有子模块之外什么都不做;这个特定的路径是可行的。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-03-03
          • 2014-08-14
          • 1970-01-01
          • 1970-01-01
          • 2019-02-05
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多