如何从一个简单的git repo推送到另一个?

时间:2012-11-14 05:43:18

标签: git version-control github

我和来自一个大团队的其他几个人正在关于该项目的单独页面上工作。我们称之为组页面。当我们处理组页面时,我们需要交换不完整的代码,我们不希望将代码发送到中央存储库。在此期间,我们还处理与组页面无关的功能,我们需要提交并推送到中央服务器。我正在寻找这个问题的解决方案,这是我的想法。请评论他们。

我们无法在实际的repo服务器中建立分支,因为它们更高。

  1. 相互创建并通过电子邮件发送差异,然后在我们需要返回群组页面时丢失更改并使用差异。收到电子邮件的人应用差异。等。
  2. 我们对代码进行了更改,提交它,但不要推送它。然后谁需要那些不完整的代码,可以直接从我们这里获取。
  3. 使用--bare标志再次复制中央服务器。因此,我们可以将其视为仅适用于组页面的本地中央服务器。我们可以从中拉出并为组页面创建一个单独的工作区。我们可以推动它。
  4. 现在每个都有问题。

    1. 太乏味了。我想用git来做它。
    2. 当有人从我身边撤出,然后开始使用新功能,然后他推(到中央服务器),然后他从我身上拉的任何东西都不会被推到服务器上。当我们的组页面代码完成时,他最终如何将它推送到服务器。
    3. 同样的问题。有没有办法从这个本地中央服务器推送到主服务器?两者都是裸露的回购当然。有没有办法从一个裸克隆推送到主github仓库?

3 个答案:

答案 0 :(得分:7)

3是你最好的选择。事实上,这就是Git的用途;使用单个组件的存储库,在工作完成后将其提供给更中央的存储库。

推动别人的改变是没有问题的。假设您进行了更改,并将其推送到组页面存储库。然后我拉出来,做一些改变,然后推回去。现在我们决定我们已经完成了。如果我推送到中央存储库,那么推送将包括我的更改以及我的更改所基于的更改。

您无需从一个裸仓库转到另一个仓库。 Git通过从您的本地仓库推送到一个或多个远程回购。克隆时,会有一个名为“origin”的默认远程仓库。但您可以根据需要配置任意数量的远程存储库。为了说明这一点,假设你已经从中央仓库克隆了;那被称为“起源”。现在你创建一个裸仓库:它在ssh://some-machine.corp.com/path/to/groups-repo.git。在您当地的工作回购中,只需执行git remote add groups ssh://some-machine.corp.com/path/to/groups-repo.git,您将获得对该组回购的引用。现在,您可以使用git fetchgit pullgit pushgroups以及origin

答案 1 :(得分:2)

  

有没有办法从一个裸克隆推送到主github仓库?

是的,您不必在工作树中推送来自裸仓库的更改。

只需ssh到“本地主人”所在的地方,然后运行:

git push origin master

正如另一个答案所指出的那样,您也可以直接从本地副本推送到远程主服务器,但有时候更方便的是拥有一个像这样的自动“网守”存储库,可以触发推送更改(例如。经过自动化后,可以查看多个远程存储库,而不必担心为特定个人设置ssh密钥等,以推动更改。

答案 2 :(得分:1)

为简单起见,Git是一个分布式版本控制系统。这意味着无论何时从repo克隆,都要克隆整个存储库。每个克隆都是完全独立的。事实上,你在你的机器上克隆的东西与服务器上的东西完全相同,你的克隆可以接收推/拉等等。(唯一的区别可能是你不会让任何人通过ssh连接

所以,无论你走哪条路,如果你的同事离开你,他们都会把你的承诺推到主回购。同样的事情将适用于选项3,使用您的团队git服务器,并在准备好时,你们中的一些人拉到他的机器并从那里推送到主服务器。

因此,在您的情况下,选项3将是最简单的。虽然,一旦你推到主回购,这个回购将给你在私人服务器上完成的所有工作。所以,我甚至不确定你拥有自己的服务器真的很有用(除非你想确保没有其他人接触你的“私人”分支)。