Sun*_*tva 7 git git-submodules git-subtree
我正在开发一个用于我的项目的框架 ; 然而,框架的开发到目前为止没有上下文:即我需要开始在现实项目中使用它,并具体看到我需要添加,修复或调整的东西(可能是在测试环境中工作的东西)适用于现实生活中的情况,或者某些事情没有意义,或者我想添加功能).
首先,由于Framework显然是一项正在进行中的工作,我需要确保它在Real-life项目中作为其中的不同部分保持更新,因此我可以回到Framework,编辑它,提交,返回到现实生活中的项目更新框架,继续与项目合作.
其次,我真的想要一种在不进行项目切换的情况下实现这一目标的方法.我的意思是我希望能够在Real-life项目中编辑Framework并将这些提交推送到Framework存储库.
现在,我知道这些工具来实现这一最有可能git submodule和git subtree,但他们两人都相当混乱.特别是子模块似乎更倾向于采用只读方法(例如,保持库始终更新):这将满足我的第一个要求,但不满足第二个要求.
有关如何使用Git实现此目的的任何指示以及工作流程的外观如何?
这两种方法中的任何一种都可以为您服务。
每一个都可以满足您的需要,就地编辑项目并将特定内容推送到单独的存储库。
为了保持两个项目的运行,这两种方法都会产生一定的开销。
关于你提到的两点:
使用子模块,您将在其他存储库的文件夹中拥有一个存储库。外部(现实生活)将子模块(框架)存储库的位置以及当前使用的提交保存在文件中。当您想要编辑 Framework 时,只需转到存储它的子文件夹,在其中它的行为应该就像您在一个完全独立的 git 存储库中一样,具有自己的远程和历史记录。修改框架后,您返回现实生活并更新子模块引用。该过程通常如下所示:
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
Run Code Online (Sandbox Code Playgroud)使用子树,您可以在同一存储库中使用现实生活和框架,但仍将框架代码保留在特定的子文件夹下。当您更改框架中的内容时,您仍然可以提交这些现实存储库,就像是单个项目一样。子树工具允许您隔离 Framework 文件夹中的更改,并从中创建一组与现实生活分开存在的提交,这些提交将包含仅框架的更改,并且可以推送到 Framework存储库。该过程如下所示:
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
Run Code Online (Sandbox Code Playgroud)如果您仍然不确定这两者之间存在的交易,我建议您使用 submodules。您会发现更多文档、用例,而且通常不太复杂。它有一些缺点,但通过首先熟悉子模块,您可以衡量子树提供的功能。有关子模块的更多信息。
| 归档时间: |
|
| 查看次数: |
1155 次 |
| 最近记录: |