使用Tower在不同的目录中管理存储库和gh-page分支

时间:2014-04-16 03:08:23

标签: git github git-tower

这似乎很简单,但无法在线找到解决方案。首先,我知道我可以在终端上执行此操作,但我更愿意使用Tower执行此操作。并非所有同事都会使用终端。我有一个存储库(https://github.com/jbryer/psabook/),我想用它来使用Github页面。我希望master分支跟踪源(主要是markdown文件)。我从这些文件构建一个网站,并希望将其发布到gh-pages分支。我可以将其作为我的存储库的子目录仅跟踪该分支吗?

以下是我在这篇文章中尝试过的内容:http://blog.blindgaenger.net/generate_github_pages_in_a_submodule.html

我从Github.com创建一个名为psabook的存储库。然后从命令行执行以下操作(如果重要的话,在Mac上):

mkdir foobar
cd foobar
git init
touch README
git add README
git commit -m "initial commit"
git remote add origin git@github.com:jbryer/psabook.git
git push origin master
git symbolic-ref HEAD refs/heads/gh-pages
rm .git/index
git clean -fdx
echo "Hello PSA Book" > index.html
git add .
git commit -a -m "first gh-page"
git push origin gh-pages
git checkout master
git submodule add -b gh-pages git@github.com:jbryer/psabook.git _site

输出结果为:

Cloning into '_site'...
remote: Counting objects: 6, done.
remote: Compressing objects: 100% (2/2), done.
remote: Total 6 (delta 0), reused 6 (delta 0)
Receiving objects: 100% (6/6), done.
Checking connectivity... done.

...继续

git status

返回:

On branc master
Changes to be committed:
  (use "git reset HEADE <file>..." to unstage)

      new file: .gitmodules
      new file: _site

...继续

git commit -m "added gh-pages as submodule"
git push

正是这个命令我得到了一个错误(注意我也不得不逃避这些问题):

git submodule init

子模块&#39; _site&#39; (git@github.com:jbryer / psagook.git)注册路径&#39; _site&#39;

这是我得到的错误:

error: pathspec 'Submodule' did not match any file(s) known to git.
error: pathspec '(git@github.com:jbryer/psabook.git)' did not match any file(s) known to git.
error: pathspec 'registered' did not match any file(s) known to git.
error: pathspec 'for' did not match any file(s) known to git.
error: pathspec 'path' did not match any file(s) known to git.
Did you forget to 'git add'?

1 个答案:

答案 0 :(得分:1)

您可以从master分支看到内容(gh-branchmaster)。

您需要在gh-branch分支中将master声明为submodule(!)。
这样,当您在master分支中时,gh-branch将显示为子文件夹。

完成设置后(在命令行中),您可以管理Tower中的所有内容。

参见&#34; What's the easiest way to deploy a folder to a branch in git?&#34;用于子模块设置。

然后需要提交gh-branch中的每个修改,并且您需要返回主文件夹以提交(再次),以便记录gitlink(special entry mode 160000)。登记/> 这样,master分支的每个版本都知道它应该与哪个版本的gh-branch一起使用。


2016年8月更新: Simpler GitHub Pages publishing 现在允许将您的网页文件保存在相同分支的子文件夹中(不再需要gh-pages) :

Now you can select a source in your repository settings and GitHub Pages will look for your content there.

所以现在这更容易了:现在需要两个分支,你可以做到一切。