2012-10-25 117 views
24

如果我理解正确,Git有两种仓库:一个叫本地,另一个叫远程。我的问题对这两种类型的存储库非常天真。Git的本地仓库和远程仓库 - 混淆概念

那是正确的说

  • Git的本地仓库是一个上,我们将进行本地更改,通常这个本地仓库是我们的计算机上。

  • Git远程仓库是服务器之一,通常是位于42英里以外的机器。

另一个问题:一些教程介绍了我这个工作流程

  • MKDIR的myproject
  • CD的myproject
  • git的初始化
  • 触摸自述
  • 混帐添加自述
  • git的承诺-a -m“

我看到git init创建myproject本地存储库。我不明白的是 git commit命令。如果我还没有设置远程存储库,Git如何知道在哪里提交我的文件?

我希望我很清楚。

[编辑]我使用Git的方式可能与其他人不同: 我使用私人Git存储库来备份我的代码。所以我想我需要一个远程仓库。在这种情况下,本地存储库应该是无稽之谈。我对吗?感谢您的澄清。这些是最天真的问题,我无法在其他地方找到答复...

+4

它提交到本地存储库。 Git不需要任何类型的“服务器”或集中式存储库。 – Mat

+2

如果你使用'git init'设置了一个本地仓库,然后你提交了'README'文件 - 那个文件被提交到本地仓库** - 根本不需要是远程的。 –

回答

27

什么让git如此真棒是它的分布式版本控制系统。您的本地存储库具有与任何其他git存储库完全相同的功能和功能。因此,服务器上的git repo与github上的git repo相同(授予github增加了额外功能,但其核心是处理git repos),这与您的同事的本地回购相同。

那么为什么这么棒?因为没有中央回购,你必须有权进行工作。即使没有互联网连接,您也可以在本地机器上自行承担分支和派对活动。然后,当您再次建立连接时,您可以将更改推送到您有权访问的任何其他git仓库。所以,尽管大多数人将特定的回购视为中央回购,但这是一个流程选择,而不是git要求。

所有这一切的目的是陈述(与其他人一样),您将自述文件提交给本地回购。然后,只要您选择,您可以将更改从本地回购推送到任何其他回购。这很漂亮!

7

您引用的语句是正确的。

根本不需要拥有远程存储库。
你可以拥有完整的git体验,包括提交,分支,合并,rebase等,只有本地存储库。

远程存储库(例如GitHub)的目的是将您的代码发布到世界(或某些人)并允许他们读取或写入它。

远程存储库仅在您的本地提交到远程存储库或您从其中提交git pull时才会涉及到。

10

如果我还没有设置远程存储库,Git如何知道在哪里提交自述文件?

您提交到本地存储库(即拥有自己的变更控制适当的存储库,它不只是一个地方结账...因为你创造它在本地,它不是甚至本地结账!)。

如果要将更改发送到远程存储库(要备份它们,使其可供团队的其他成员使用,或将它们发布到全球),则必须使用push这些存储库。

26

正如我遇到酷似你同样的问题(从VSSTFS mentalty推出),并在过去的3天开始明白。我相信这些图表对于了解被困在那里的其他人的整个情况会更有帮助。

来自:https://greenido.files.wordpress.com/2013/07/git-local-remote.png?w=696&h=570

Git Flow diagram 1

再一个,从 :https://wiki.lsr.ei.tum.de/lib/exe/fetch.php?media=nst/programming/git_flow.jpg&w=500&tok=e87798

Git flow diagram 2

+1

有帮助的答案。来自TFS的我自己并不相信本地回购的想法 - 这感觉就像是一个不必要的额外步骤,以便将更改推向团队。 –

相关问题