Git带有多个分支的裸仓

时间:2012-02-17 08:01:13

标签: git git-branch git-bare

我想制作一个带有多个分支(主,开发,发布等等)的git裸存储库。所以问题是,是否可以检查裸存储库或如何在分支之间切换(切换是否有意义)?

当我想推送到裸存储库时,我可以在裸存储库上进行合并,还是必须在本地进行合并并推送足够的分支?所以寻找正确的方法: - )

由于 彼得

2 个答案:

答案 0 :(得分:6)

  

我想创建一个带有多个分支的git裸存储库(master,develop,release等)。

从这个问题来看,似乎你不确定你会创建一个简单的git存储库的原因,以及你将如何使用所述存储库。问题是,为什么你想建立一个裸存储库?

Pro Git,裸存储库是“不包含工作目录的存储库”。它是一个您无法使用的存储库,仅用于git pushgit pull。这样做的原因总结为here

  

“裸存储库是没有签出的代码工作副本的存储库。它只包含git数据库。作为一般规则,你永远不应该进入包含工作副本中的更改的存储库。确保这不会'我们正在使服务器存储库成为一个裸存储库 - 它没有工作副本。“

因此,一个简单的git存储库肯定可以包含多个分支。您绝对可以将裸远程存储库的副本提取到本地存储库中,然后从本地存储库推送到远程存储库(裸)存储库。但是,希望工作从您的裸存储库中删除。 (此外,在裸存储库中运行git add是不可能的;请参阅this SO question进行说明。

  

所以问题是,是否可以检查裸存储库或如何在分支之间切换(切换是否合理)?

我认为这个问题并不完全清楚,因为你从来没有真正在裸存储库上切换分支 - 你永远不会在裸存储库上工作。你所做的只是推或拉。

  

当我想推送到裸存储库时,我可以在裸存储库上进行合并,还是必须在本地进行合并并推送足够的分支?所以寻找正确的方法: - )

git-push到裸存储库,您必须首先确保没有合并冲突 - 如果存在,推送将失败(Reference: book.git-scm.com, "Pushing changes to a public repository")。因此,必须在本地中进行合并,然后使用git-push在裸存储库中更改快速转发

  

所以寻找正确的方法。

除了你不应该而且不能解决它的事实之外,没有任何关于裸存储库的特殊内容。正如其他人所引用的那样,gitflow model让您了解涉及多个存储库的工作流程 - 在SO上有很多关于git工作流示例和方法的问题。几乎每个引用(1, Pro Git)(2, book.git-scm.com)都将裸存储库公共或已发布的存储库结合使用 - 链接的文章讨论了裸机的创建和使用存储库详细。

答案 1 :(得分:2)

对于你想要做的事情,这个问题有点不清楚。 Git不强制执行特定的工作流模型。我们的想法是让你 - 开发团队。根据您发布的分支机构名称,在我看来,您倾向于gitflow model,这对许多公司和开发团队来说是一个非常成功的工作流程。

当您最初创建存储库时(如果它在远程服务器上某处不存在),您将使用git init创建一个具有默认master分支的新存储库。然后,您可以使用git add添加文件并提交:git commit。当您准备好推送到远程git服务器(例如github)时,您将使用git remote add origin <url>添加远程git URL并使用git push origin master将您的存储库推送到服务器 如果您已经有一个希望从中克隆存储库的远程服务器,则使用git clone <repo url>来下拉存储库并指向默认分支(通常为master)。

切换分支对于您希望在功能分支上进行开发然后将其合并(例如),或者当您的代码准备好发布时,切换到release分支并最终将其合并到一个实时/生产分支。有关以此方式执行此操作的详细信息,请参阅gitflow model

为了开始使用git,我建议您阅读documentation on github,从'beginner'开始。您可以在A List Apart Get Started with git文章中详细了解git是什么以及一些基本命令。