2012-02-17 139 views
1

Git的裸回购我想和多个分支(主,开发,发布等..)一个Git的裸库。所以问题是,如果可以检出裸仓库或如何在分支之间切换(是否切换)?多个分支

当我要推到裸露的库我可以对纯仓库或合并合并必须在本地完成,推动了足够的分支?因此,寻找一种正确的做法:-)

感谢 彼得

+1

网站社区期望您接受提供给您的问题的答案。谢谢! – CharlesB 2012-02-17 08:21:22

+0

你好@Pepe,欢迎来到StackOverflow。请阅读FAQ:http://stackoverflow.com/faq,特别注意关于如何在stackoverflow上提出问题的部分。我也注意到你过去曾经提过很多问题,但没有投票或选择任何答案。您可以导航至您的个人资料,查看您所提问题的列表,通读并投票并选择解决问题的答案。谢谢! – 2012-02-17 08:23:02

+0

也许我不明白你的意见是什么意思? – Pepe 2012-02-17 08:32:15

回答

6

I want to make a git bare repository with multiple branches (master, develop, release, etc..).

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

Pro Git,纯仓库是“不包含工作目录的仓库。”这是一个你无法使用的版本库,只适用于git pushgit pull。这样做的原因概括起来here

"A bare repository is one without a checked out working copy of the code. It only contains the git database. As a general rule you should never push into a repository that contains changes in the working copy. To ensure this doesn't happen, we're making the server repository a bare repository - it has no working copy."

所以,裸露的git仓库,绝对可以包含多个分支。你绝对可以获取裸远程库的副本到您的当地库,并从当地推送到你的远程(裸)库。但是,您希望工作出你的裸库中。 (此外,在裸仓库中运行git add是不可能的;参见this SO question以进行澄清)。

So question is if it is possible to checkout the bare repository or how to switch among the branches (does it make a sense to switch)?

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

When I want to push to the bare repository can I make a merging on bare repository or merging must be done locally and push the adequate branch? So looking for a right approach :-)

git-push以纯仓库,你必须首先确保没有合并冲突 - 如果有,推送会失败(Reference: book.git-scm.com, "Pushing changes to a public repository")。因此合并必须在本地执行,然后在git-push的裸仓库上更改快进

So looking for a right approach.

没有什么特别之处纯仓库,除了事实上,你不应该也不能工作了吧。正如其他人所引用的,gitflow model为您提供了一个涉及多个存储库的工作流的概念 - 关于如何要求提供git工作流示例和方法论,存在很多问题。几乎每一个引用(1, Pro Git)(2, book.git-scm.com)使用纯仓库连同公开或公布库 - 链接的文章讨论了创建和使用的详细裸库。

+0

你为什么希望建立一个裸仓库?我想要有一个“中央”的回购,让开发者分享。有些是内部的,有些是公司外部的。我想遵循这个模型http://nvie.com/posts/a-successful-git-branching-model/ – Pepe 2012-02-17 19:23:41

2

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

当您最初创建存储库(如果在远程服务器上不存在的地方),你会使用git init它创建了一个默认master分支新的存储库。然后,您可以使用git add添加文件,并提交:git commit。当你准备推到远程的git服务器(如github),你会使用添加远程git的URL:git remote add origin <url>和使用git push origin master 把你的资料库服务器如果你已经拥有你想克隆一个远程服务器存储库中,您将使用git clone <repo url>,这会拉下存储库并将您指向默认分支(通常为master)。

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

对于入门git的,我建议你阅读过documentation on github,从“初学者”。您可以阅读更多关于Git是什么以及A List Apart Get Started with git文章中的一些基本命令。

+0

是的,我看到了“gitflow模型”。所以问题与它有关。我创建“裸”回购。我想在这个“光秃秃的”回购中拥有多个分行。那么,我能否在“裸机”回购中检出这些分支,甚至是否可以在裸回购上检出分支? – Pepe 2012-02-17 08:31:41

+0

所以我有裸回购,并有2个分行:mastrer&开发,我只有与主分支本地回购。我想把它从我的本地推到裸回购。 如果我想推它开发分支我得到这个: c:\ work \ Projects \ sw_fw01> git推EPO开发 错误:src refspec开发不匹配任何。 错误:未能将一些文件推送到'c:\ Dropbox \ projects \ git \ sw_fw01.git \' 问题在哪里? – Pepe 2012-02-17 09:38:46

+0

+1为gitflow模型 – 2012-02-17 14:34:44