gpt4 book ai didi

git - 如何在本地仓库中构建/测试代码,同时继续修改它

转载 作者:行者123 更新时间:2023-12-03 19:12:23 24 4
gpt4 key购买 nike

我正在一个构建需要几个小时的仓库中工作。我想在开发功能的下一部分时构建该代码(在另一个包含正在构建的更改的存储库中)。

我无法分解任务。将“附加代码”视为单元测试可能会有所帮助。
关于这个存储库的严重程度的回应对我没有帮助。将我的代码视为重构以使其更加模块化可能会有所帮助。

目前,我正被周期性的时间所扼杀,以进行更改和构建它们。

有没有办法设置两个本地 git repos 并将第二个基于第一个的 checkin 代码?

我想以这种模式发展:

  • 在 repo 1
  • 中开发代码
  • 构建 repo 1(时钟从 2 小时构建开始)
  • 同时,将更改从 repo 1 pull 到 repo 2
  • 同时,在 repo 2 中进行进一步的更改,不会破坏 repo 1 中正在进行的构建
  • 并行,repo 2 中的完整代码
  • 在 repo 1
  • 中完成构建
  • 将更改从 repo 2 pull 到 repo 1

  • 我有什么选择来实现这一目标?

    我并没有接受上述步骤,但我有兴趣减少在运行非常长的构建时必须花在不开发代码上的时间。

    最佳答案

    根据您的情况和需要,您有几个选择。选项 1 和 2 完全在您的本地计算机上工作,而选项 3 通过 git 服务器工作。

    选项 1:制作本地克隆
    git clone /path/to/source-repo-dir /path/to/new-repo-dir将进行本地克隆。来自 git help clone :

    When the repository to clone from is on a local machine, this flag bypasses the normal "Git aware" transport mechanism and clones the repository by making a copy of HEAD and everything under objects and refs directories. The files under .git/objects/ directory are hardlinked to save space when possible.



    即使您正在克隆的 repo 是本地的,它也会被配置为 远程 ,您将像在 GitHub 之类的 git 服务器上一样 pull 和推送它。

    为了更容易保持头脑清醒,您可以使用 --origin带有 git clone 的选项给它的本地远程一个默认的“origin”以外的名称,特别是如果您习惯使用或已经使用该名称作为实际的上游远程仓库。

    我可能会使用下游克隆进行构建,并在上游存储库上进行开发,但如果您愿意,也可以采用其他方式。您甚至可以通过在原始存储库中添加新存储库作为远程存储库来使关系对称(这样它们都是彼此的远程存储库)。

    另见 git help clone信息,例如关于 --no-hardlinks--shared选项,但我建议坚持使用默认值。

    选项 2:使用 git worktree
    此选项允许您拥有一个本地存储库,但拥有两个或多个单独的工作树。

    这种方法的主要限制是 没有两个工作树可以 checkout 相同的分支 .如果您的持续集成工作树需要与您的开发工作树位于同一分支上,这可能对您不起作用。有关更多详细信息和解决方法,请参阅 this answer .

    Multiple working directories with Git?了解更多信息。

    选项 3:通过中央远程(例如私有(private) git 服务器或 GitHub)

    如果您将代码推送到远程“上游”存储库,只需对其进行新的克隆。这与选项 1 完全相同,只是在两个本地克隆之间同步更改需要额外的步骤,即向上游仓库推送和从上游仓库 pull 。如果你仍然这样做,或者如果你在一个团队中工作并且你希望你的队友在你的长时间构建完成之前看到新代码,那么这就是要走的路。

    这就是团队进行持续集成的方式。他们通常有专门的机器来监控中央仓库,并在其监控的分支更新时启动持续集成构建和测试。

    您还可以利用持续集成服务(例如 GitHub 上的 Travis)。

    关于git - 如何在本地仓库中构建/测试代码,同时继续修改它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61683771/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com