gpt4 book ai didi

git - 拆分一个 git 存储库以同时处理两个项目

转载 作者:太空狗 更新时间:2023-10-29 13:02:59 32 4
gpt4 key购买 nike

我正在开发一个用于我的项目的框架;然而,框架的开发可能会在没有上下文的情况下走得太远:也就是说,我需要开始在现实生活中的项目中使用它,并具体了解我需要添加、修复或调整的内容(也许是那些在测试环境中工作并不适用于现实情况,或者有些事情没有意义,或者我想添加功能)。

首先,由于 Framework 显然是一项正在进行的工作,我需要确保它在 Real-life project 中作为它,所以我可以回到框架,编辑它,提交,回到现实生活中的项目更新框架,继续处理项目。

其次,我实际上想要一种无需进行项目切换即可实现此目的的方法。我的意思是,我希望能够在真实项目 中编辑Framework,并将这些提交推送到Framework 存储库。

现在,我知道实现此目的的工具很可能是 git submodulegit subtree,但它们都非常令人困惑。特别是子模块,它似乎更倾向于只读方法(例如,让您的库始终更新):这会满足我的第一个要求,但不会满足第二个要求。

关于如何使用 Git 实现这一点以及工作流程的样子有什么建议吗?

最佳答案

这两种方法中的任何一种都会为您服务。

每个人都可以满足您的需要,就地编辑项目并将该特定内容推送到单独的存储库。

为了保持两个项目的运行,这两种方法都会产生一定的开销。

关于你提到的两点:

  • 使用子模块,您将在其他存储库的文件夹中拥有一个存储库。外层的(Real-Life)将子模块(Framework)存储库的位置和当前使用的提交保存在一个文件中。当你想编辑 Framework 时,你只需转到存储它的子文件夹,在那里它的行为应该就像你在一个完全独立的 git 存储库中一样,它有自己的远程和历史记录。修改 Framework 后,您返回 Real-Life 并更新子模块引用。该过程通常如下所示:

    Edit files in Framework
    Move to Framework subfolder
    Stage, commit, and push changes to Framework repository
    Go back to Real-Life folder
    Update Real-Life submodule reference
  • 使用子树,您可以在同一个存储库中处理 Real-Life 和 Framework,仍然将 Framework 代码保存在特定的子文件夹下。当您更改 Framework 中的内容时,您仍然会提交那些 Real-Life 存储库,就好像是单个项目一样。子树工具允许的是,您可以隔离框架文件夹中的更改,并从这些更改中创建一组独立于现实生活的提交,此提交将包含仅限框架的更改,并且可以推送到框架存储库。该过程如下所示:

    Edit files in Framework
    Stage, commit, and push to Real-Life repository
    Create Framework commits using subtree tools
    Push Framework specific commits to Framework repository

如果您仍然不确定这两者之间存在的权衡取舍,我建议您继续使用子模块。您会发现更多文档、用例,并且通常不那么复杂。它有一些缺点,但通过首先熟悉子模块,您可以衡量子树提供的内容。更多 info about submodules .

关于git - 拆分一个 git 存储库以同时处理两个项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18802156/

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