3

我有一个存储库,其中包含分支中的软件和分支中master的主页gh-pages。该项目包含一个examples目录,其中包含应包含在master分支中的源文件。主页应包含已编译的示例,可能还包含源文件。如何master在两个分支之间共享示例(取决于要编译的分支)?所需的工作流程是:

$ git checkout gh-pages; ls examples/ # 目录为空
$ git结帐大师;ls examples/ # 目录包含 .tex 源文件
作者.tex
$ make examples && ls examples/ # 将 .tex 文件编译成 .png 文件
author.tex 作者.png
$ $MAGIC_COMMIT_TO_BRANCH_SELECTED_FILES gh-pages author.png author.tex
$ git checkout gh-pages; 例子/
author.tex 作者.png

分支gh-pages可能已经包含示例,因此只需切换到此分支就会覆盖新编译的文件。编译后的文件不应提交到master分支。我考虑过创建另一个分支examples,但这并没有真正让它变得更容易。如果 git submodule 可以指向特定的分支(可以吗?)我可以创建一个examples在其他分支中用作子模块的分支。将示例移至另一个存储库可能有效,但我更愿意将所有示例保存在一个存储库中。也许有一些合并管理器或樱桃采摘魔法?

4

2 回答 2

1

我认为您没有掌握版本控制的全部内容。至少在我看来,您以错误的方式使用分支。这是导致您所有问题的混乱存储库设计。将源代码放在两个分支上没有任何意义,同时编译文件应该从一个分支生成并提交到另一个分支,那么您不妨在同一分支上生成并提交编译文件产生它的来源。

您似乎正在使用分支而不是使用单独的存储库。如果您在一个分支上从某个源代码编译代码并在另一个分支上提交文件,您如何知道它是从哪个版本的源代码编译的?

我不明白为什么你不能只将源代码和编译文件放在一个分支中,工作和编译直到你“完成”,然后将更改合并到主文件中。然后你在两个分支上有源文件和编译文件,但那又怎样?:) 另一种方法是将源代码保留在一个分支中,在源代码上工作,直到您“完成”提交源代码并将更改合并到 master 中。查看 master 分支,编译并提交新的编译文件。

于 2011-03-17T11:22:03.137 回答
0

我会创建一个分支来包含所有这些共享文件。每当分支需要共享文件时,它都可以使用

git checkout workingbranch
git checkout sharedbranch <needed file>

稍后您可以使用相同的命令进行更新

git checkout sharedbranch <needed file>
于 2018-04-07T20:37:49.450 回答