如何组织个人Git存储库?


20

我正在建立一个GitHub帐户,并计划将我作为一些近期iOS项目的一部分开发的库免费提供给其他iOS开发人员使用。

我目前大部分代码都没有异地备份,因此,我最初以为我会将所有个人项目或至少所有iOS项目上载到私有GitHub托管的存储库中。但是,我有很多项目,其中很多都是低价值的(即从书本改写而来的学习经验)。GitHub不仅由私有存储库收取费用,而且似乎没有任何分层组织存储库的方法。

我是否缺少某些东西,可以让我使用具有层次结构的git存储库,并在需要时/根据我目前的SVN方式检出碎片?

GitHub(或像BitBucket这样的竞争对手)是否具有某些我缺少的项目组织功能?

如果失败了,处理这种情况的普遍接受的“ Git方式”是什么(丢弃不打算发布的项目,将其离线存储,以某种方式将它们捆绑在一起,等等,等等)?

据我所知,我的选择是:

  1. 将库放到GitHub上,继续为所有其他项目托管我自己的SVN,使用非VCS解决方案进行异地备份(崩溃),
  2. 将我计划在GitHub上发布的库和软件(分别作为公共和私人版本)放置,继续为我不太关心的项目托管我自己的SVN,并且仅可能重新访问以刷新关于如何实现XYZ的记忆,决定如果我的房屋爆裂(双声),我愿意注销它们,
  3. 将所有内容放到[GitHub和/或BitBucket]上,通过搜索我需要的内容/在我的[GitHub和/或BitBucket]帐户中维护一些脱机指针集来处理一些可笑的存储库(三重问题)

2
我很想知道我们在这里谈论多少个存储库。您所说的“指针”是什么意思?
mhulse

由于这是一个古老的问题,bitbucket允许您创建免费的组织,在这些组织中,您可以拥有可以包含存储库的项目。组织最多可以释放一定数量的用户。您可以通过org / project / repo管理权限。
xenoterracide

请注意,GitHub现在提供无限的私有存储库及其付费计划。
杰克

Answers:


11

bitbucket.org允许您创建无限的私人存储库。

Git不允许您仅签出一些代码。因此,您需要为每个项目创建一个存储库,或处理克隆所有项目。实际上,将我们所有的小型项目放在一个仓库中并没有问题。克隆一次即可完成。

使用Git,您无需再“检出”代码,除非您放弃本地存储库或转移到另一台机器。您只需同步所有更改。

我有一个类似的问题,有大量的存储库。我无法将它们全部存储在单个存储库中的原因是,我需要在每个存储库中分支不同的版本。这很难管理。


是的,是的。。。我可能不应该特别提到GitHub,因为我愿意将BitBucket用于私有项目。稍微编辑了问题,使其不太具体。
Arkaaito 2012年

5

简短答案...

我的建议:从GitHub和/或Bitbucket上的公共帐户开始(其他?)。抛出一些公共项目,并开始使用工具/界面。一旦对服务有所了解,就应该掌握每种服务的局限性,优点和缺点。从那里,您应该能够选择最佳的版本控制启示路径。:)


长答案...

我目前大部分代码都没有异地备份,因此,我最初以为我会将所有个人项目或至少所有iOS项目上载到私有GitHub托管的存储库中。但是,我有很多项目,其中很多都是低价值的(即从书本改写而来的学习经验)。

您是否考虑过安装自己的Git客户端?如果您已经为虚拟主机付费,那么可以将该虚拟主机用于自己的Git设置。

例如,我的主机是WebFaction(无隶属关系):

安装Git Web应用程序

前往此路线可能会节省一些资金,尤其是。如果您已经为托管付费。

GitHub不仅按私有存储库收费,

只是为了向其他人澄清(再次,没有与GitHub或BitBucket的业务联系):

GitHub:计划和定价

  • $ 7 / mo。最多5个私人存储库,无限量存储其他所有内容。
  • $ 12 /月。最多可容纳10个私人存储库,无限量存储其他所有内容。
  • $ 12 /月。最多可容纳20个私有存储库,而所有其他内容均不受限制。

请注意,“业务计划”的定价是不同的。

Atlassian为Bitbucket提供Git和Mercurial回购托管的定价

如安德鲁(Andrew)在其他答案中所述,Bitbucket吹捧无限的私人仓库。

  • 5位使用者:免费
  • 10位使用者: $ 10 /月。
  • 25位使用者: $ 25 /月。
  • 50个用户: $ 50 /月。
  • 100位使用者: $ 100 /月。
  • 无限 $ 200 /月。

它似乎没有任何分层组织存储库的方法。

不确定“分层”到底是什么意思(可能是因为我对SVN不熟悉)。

我不确定这是否有帮助,但是您可以查看此比较表以查看命令的比较/差异:

我是否缺少某些东西,可以让我使用具有层次结构的git存储库,并在需要时/根据我目前的SVN方式检出碎片?

分枝?

GitHub(或像BitBucket这样的竞争对手)是否具有某些我缺少的项目组织功能?

不确定这是否有帮助,但是您可以看一下:

Git带有用于提交(git-gui)和浏览(gitk)的内置GUI工具,但是有一些第三方工具供用户寻找特定于平台的体验。

……再次,不确定这些工具中的任何工具是否可以帮助您对可能的事物有所了解。

明确地说,我不确定您的Git技能水平...如果您是Git / GitHub的新手,那么使用GUI可能是使您快速了解事物的快速/简便方法。我个人喜欢使用Mac / Windows应用程序的官方GitHub。

如果失败了,处理这种情况的普遍接受的“ git方法”是什么(丢弃不打算发布的项目,将其离线存储,以某种方式将它们捆绑在一起,等等,等等)?

如果我是你,我会使用存储库。

您需要多少个私有存储库?

如果要使用GitHub,一种解决方案可能是获得最便宜的计划,并利用一些私有存储库来保存所有测试/非公开代码。您可以只在main分支上使用文件夹结构来维护层次结构,也可以使用多个分支来使事情更独立。

提示:如果您使用的是最新版本的Git,则可以使用git clone -b mybranch --single-branch git://sub.domain.com/repo.git以下命令拉出特定的分支:

不过,我必须警告您,使用分支来组织代码(例如文件夹)并不是真正的最佳处理方式(尽管,没有任何事情表明您不能走这条路)。

在这里似乎是我的答案,以获取有关GitHub分支的相关信息。

再次,我认为要走多个回购协议。

您可能会问自己,您的代码是否真的需要私有?您是否可以公开使用上述代码而不会产生任何影响?

将库放到GitHub上,继续为所有其他项目托管我自己的SVN,使用非VCS解决方案进行异地备份(崩溃),

如果您走这条路,Dropbox(或类似产品)可能是获取某种形式的版本控制和同步异地备份的好方法。

将我计划在GitHub上发布的库和软件(分别作为公共和私人版本)放置,继续为我不太关心的项目托管我自己的SVN,并且仅可能重新访问以刷新关于如何实现XYZ的记忆,决定如果我的房屋爆裂(双声),我愿意注销它们,

这使我回到“您已经为托管支付了吗?如果是,您可以安装自己的Git托管”这个问题。优势在于,即使源代码不在同一主机上,您也可以将所有源代码都放在Git的保护下(即,将GitHub用于要展示的公共内容)。

将所有内容放到[GitHub和/或BitBucket]上,通过搜索我需要的内容/在我的[GitHub和/或BitBucket]帐户中维护一些脱机指针集来处理一些可笑的存储库(三重问题)

--->请参阅上面的简短回答。^^^^^^


0

这是我的工作:

  • 将希望公开的独立项目放在单独的GitHub中库中。由于GitHub目前实际上是共享代码的地方,因此这将使您的项目更容易发现/更容易分叉。
  • 对于您希望保持私有的任何项目,请将它们放入您选择的提供商托管的私有仓库中。如前所述,Bitbucket是一个不错的选择,因为它允许无限的私人仓库。
  • 将所有其他代码放入“垃圾”存储库中。这可以包括用于学习和测试的代码,以及并非项目真正组成部分的小片段。只要没有理由将其保密,您也可以在GitHub上托管此仓库。

    除了版本控制的所有常规优势(您已经在SVN中拥有)之外,现在还可以在线备份代码。如果您的任何垃圾代码变成了项目,则可以将其分解为自己的存储库。

    您可以将此代码放在单独的存储库中,也可以使用git子模块或子树之类的东西,但我发现将其全部保存在一个存储库中并使用文件夹进行组织是最简单的。它简单得多,并且git足够快,因此回购的大小不会成为问题。


0

一种可能的技术是使用分支。

git repo中的分支只是指向提交的指针,它们不必以任何方式相互关联。因此,您可以在托管服务上创建一个“ minorprojects”存储库,然后在该存储库中为每个项目使用一个分支。如果一个较小的项目增长,您可以轻松地将分支机构移到它自己的仓库中。

在本地,您可以将分支保留在单独的本地存储库中(本地和远程存储库之间不必存在1:1映射),也可以具有单个本地存储库,并使用git worktree维护多个工作树。我个人认为第一种方法不太容易出错。


将它们存储在相同的远程存储库中并不意味着您必须使用相同的本地存储库。
彼得·格林

忘了我最后的评论。我刚刚了解了该git worktree命令,该命令使您可以为存储库创建其他工作树,从而使您可以同时检出多个分支。这样,您的方法的缺点就基本消失了:只需为每个独立分支创建一个工作树,然后像独立仓库一样使用它们。将其添加到您的答案中可能是一个好主意:-)
cmaster-恢复莫妮卡

@cmaster,完成了……
Peter Green
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.