1

我想创建一个具有多个分支(主、开发、发布等)的 git 裸存储库。所以问题是是否可以签出裸存储库或如何在分支之间切换(切换是否有意义)?

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

谢谢彼得

4

2 回答 2

6

我想创建一个具有多个分支(主、开发、发布等)的 git 裸存储库。

从问题来看,您似乎不确定制作裸 git 存储库的原因,以及如何使用该存储库。问题是,您为什么要创建一个裸存储库?

Pro Git中,裸存储库是“不包含工作目录的存储库”。它是一个你不用工作的存储库,只是习惯于git push使用git pull。其原因总结如下

“裸存储库是一个没有检出代码工作副本的存储库。它只包含 git 数据库。作为一般规则,您永远不应该推送到包含工作副本更改的存储库。为了确保不会发生这种情况,我们正在使服务器存储库成为一个裸存储库——它没有工作副本。”

因此,一个裸 git 存储库肯定可以包含多个分支。您绝对可以将裸远程存储库的副本获取到本地存储库,然后从本地存储库推送到远程(裸)存储库。但是,您不想使用存储库。git add(此外,在裸存储库中运行是不可能的;请参阅这个 SO question进行澄清)。

所以问题是是否可以签出裸存储库或如何在分支之间切换(切换是否有意义)?

我认为这个问题并不完全清楚,因为您从未真正在裸存储库上切换分支-您从未在裸存储库上工作。您所做的就是推动或拉动它。

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

对于git-push裸仓库,您必须首先确保没有合并冲突 - 如果有,推送将失败(参考:book.git-scm.com,“将更改推送到公共仓库”)。因此,必须在本地进行合并,然后使用git-push.

所以寻找正确的方法。

裸存储库没有什么特别之处,除了你不应该也不能解决它的事实。正如其他人所引用的那样,gitflow 模型让您了解涉及多个存储库的工作流 - SO 上有很多问题询问 git 工作流示例和方法。几乎所有参考资料(1,Pro Git)(2,book.git-scm.com)都裸存储库公共或已发布存储库结合使用——链接的文章详细讨论了裸存储库的创建和使用。

于 2012-02-17T16:50:48.817 回答
2

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

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

当您想要在功能分支上进行开发然后将其合并(例如)时,或者当您的代码准备好发布时,切换分支非常有用,分支到release分支并最终将其合并到实时/生产分支中. 有关这样做的详细信息,请参阅gitflow 模型。

对于 git 入门,我建议通读github 上的文档,从“初学者”开始。您也可以在 A List Apart Get Started with git文章中阅读更多关于 git 是什么以及一些基本命令的信息。

于 2012-02-17T08:12:38.347 回答