gpt4 book ai didi

git - 将 git 分支用于项目的变体

转载 作者:太空狗 更新时间:2023-10-29 14:09:37 24 4
gpt4 key购买 nike

我正在使用 git 的分支功能来管理一个小型网站的 5 个变体。有 5 个版本都将在生产环境中的不同子目录中运行。我检查各个分支到各自文件夹的方法是:

mkdir foo && cd foo
git init
git remote add origin git@...:project.git
git fetch origin foo:foo

其中“foo”是给定的分支名称。这很好,除了它将我的整个存储库(设计、as3 源代码等) pull 到那些分支文件夹中,而不仅仅是公共(public) www 文件夹,这是我在生产中真正想要的唯一东西。

有没有更简洁的方法来处理这个问题? Git 不能克隆子目录吗?

最佳答案

DVCS 的运作方式(推送/pull 所有 存储库)迫使您根据 component (coherent set of files 进行推理。 ,有自己的提交生命周期)

您的 www 文件夹在您的情况下应该是 submodule (Git) or subRepo (Mercurial) .
这样,您就可以 pull 一切。


另一个解决方案(如果你想保持你的 repo 是这样的),是定义一个特殊的“发布”分支(release_foo for foo),其中您删除了除 www 之外的所有内容。
foo 上的开发准备好发布时,您可以在 release_foo 上 merge 并在 that 分支上删除不需要的内容。
不是理想的解决方案,但可行。


我最初忘记提及的最后一个解决方案自 Git1.7 以来可用:

sparse checkout

Once the repository is cloned, the read-tree trick limits your "view" of the repository to only those files or directories that are in the .git/info/sparse-checkout file.

在你的例子中,你可以只用相关目录创建一个 .git/info/sparse-checkout ,当你更新你的工作树时,只有那个目录(比如 foo) 会出现。
这是另一种解决方案:

  • 允许您保持存储库不被修改
  • 避免在交付前进行任何“维护”工作。

关于git - 将 git 分支用于项目的变体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2640800/

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