在具有两个分支(master 和 develop)的存储库和文件夹中包含的 git 子树存储库中shared
,是否可以shared
在更改分支时自动将子树同步到特定版本(提交)?
我最好的猜测是,每当我在本地更改分支时,我可能正在寻找一种运行脚本的方法。然后该脚本在子树上执行必要的 git pull/fetch 命令。
假设主分支应该始终指向共享子树存储库的 v1.0 标记提交,而开发分支始终签出最新提交。对共享子树的编辑仅在开发分支中进行,并将在切换到主分支之前提交(或隐藏)。
在具有两个分支(master 和 develop)的存储库和文件夹中包含的 git 子树存储库中shared
,是否可以shared
在更改分支时自动将子树同步到特定版本(提交)?
我最好的猜测是,每当我在本地更改分支时,我可能正在寻找一种运行脚本的方法。然后该脚本在子树上执行必要的 git pull/fetch 命令。
假设主分支应该始终指向共享子树存储库的 v1.0 标记提交,而开发分支始终签出最新提交。对共享子树的编辑仅在开发分支中进行,并将在切换到主分支之前提交(或隐藏)。
我很困惑为什么这个问题被放弃了这么久。在尝试重建 SVN“外部”依赖项时,我在 SVN-Git 迁移中遇到了同样的问题。
只是在这里将另一个答案放到互联网上,我认为要走的路是创建一个脚本调用git fetch ...
以及git subtree pull ...
一个执行该脚本的结帐后挂钩。我的想法是脚本在每个分支上都具有相同的名称,因此 post-checkout 挂钩只会做调用switch_dependency.py
或其他操作,您必须手动处理该脚本中的正确命令。
是的,您可以让每个分支中的子树指向不同的代码版本。子树的状态与任何其他文件集一样属于提交,这意味着一个分支可以在子树中具有与其他分支不同的内容。签出时,子树的状态将再次更新为该分支上的任何内容,就像任何其他文件一样。
显示这一点的最简单方法是在 中创建一个子树master
,从 中创建一个分支master
,然后在分支中更新所述子树并提交。因此,分支将具有子树的修改版本,如果您签出master
,它将恢复到之前在master
.