2013-08-19 47 views
0

我已经创建了一个GitHub javascript项目,并且在源代码处于正确的形状之后,我以后也为该项目创建了github页面。这与我的master分支一起创建了一个新的gh-pages分支,其中将包含这些页面的内容。在两个分支之间同步文件夹

现在,我想在相同页面中显示我的项目作为演示工作。我已经创建了源代码的相关部分的副本,但是我发现每次进行更改时,都需要在两侧进行更改(mastergh-pages),或者更糟糕的是:合并忽略最多的更改不相关的提交(例如,单元测试)。

我已经看到了子树作为保持多个存储库之间同步更改的方式,但我不完全了解它是否适​​用于我的情况以及如何。

如何实现在两个分支间同步一个文件夹?

谢谢!

回答

0

您可以从一个特定的分支检出一个特定的文件或文件夹或犯这样

//current branch: gh-pages 

git checkout master yourfolder/ 

这将检查出你想要从主分支到您的GH-页面同步的特定文件夹。

现在,您只能提交该特定文件夹中的更改。

+0

谢谢!我已经尝试了这一点,工作正常。如果将共享部分隔离到特定路径中,则更容易,以避免从一个分支合并到另一个分支。以这种方式,我将我的演示和HTML保存在'gh-pages'和源代码中,并在'master'分支中进行测试,并且我只需要同步一个公共部分。 – Alpha

0

我你宁愿不签出GH-页面分支(如避免藏匿),你可以

git commit-tree -p gh-pages -m "" master:html \ 
| xargs git update-ref refs/heads/gh-pages 
+0

不知道这些命令。如果我理解正确,你在这里做的是将当前HEAD移动到gh页面,然后提交整棵树。这应该将当前的HEAD移动到当前分支的最后一个提交,对吧?如果我错了,请告诉我。 如果不是,那么如果发生冲突会发生什么?这些命令如何处理整个树的提交而不是单个变更集? – Alpha

+0

这些命令的级别低于commit - commit基于写入树,commit-tree和update-ref作为脚本启动。但是你的html目录树已经在版本库中。如果你对此感兴趣,我推荐gitcore-tutorial。 – jthill