-bare选项是否等于Git中的core.bare配置?

时间:2013-02-14 14:32:25

标签: git

我想在我的服务器上创建一个git repo,以便在推送后更新我的网站。我找到的所有教程的第一步(例如:http://developertheory.com/how-to-auto-deploy-apps-after-git-push/)是这个命令:

git init --bare

在接下来的步骤中,我应该输入以下命令:

git config core.worktree /path/to/git/deploy
git config core.bare false
git config receive.denycurrentbranch ignore

第二个命令(git config core.bare false)将repo设置为non-bare。为什么我们将repo初始化为裸机,然后将其设置为非裸机?!

1 个答案:

答案 0 :(得分:1)

我怀疑本教程使用git init --bare作为一种“干净”的方式来创建一个无法与实际文件混合的空repo:

这样的回购将直接包含.git常用内容,即使在重新配置为非裸版之后也是如此。 你需要一个非裸的repo来使git checkout(在钩子中)工作,因为你只能在非裸仓库中检查一个分支(根据定义,一个裸的仓库没有工作树)

我不推荐这种部署方法,我更喜欢:

  • 保持那个回购裸以便推动它
  • 设置第二个 repo,非裸
  • 在第一个(裸)repo上添加一个post-receive钩子,以便第二个钩子从刚收到的第一个钩子中拉出。

参见例如: