Git的本地存储库和远程存储库 - 令人困惑的概念

时间:2012-10-25 15:33:09

标签: git repository

如果我理解正确,Git有两种存储库:一种叫做local,另一种叫做remote。关于这两种类型的存储库,我的问题非常天真。

这是否正确

  • Git本地存储库是我们将在其上进行本地更改的存储库,通常这个本地存储库位于我们的计算机上。

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

另一个问题:一些教程向我展示了这个工作流程

  • mkdir myproject
  • cd myproject
  • git init
  • 触摸README
  • git add README
  • git commit -a -m“

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

我希望我很清楚。

[编辑]我使用Git的方式可能与其他人不同: 我使用私有Git存储库来备份我的代码。所以我认为我确实需要一个远程存储库。在这种情况下,本地存储库应该是无意义的。我对吗?谢谢你的澄清。这些是我在其他地方找不到回复的最天真的问题......

5 个答案:

答案 0 :(得分:45)

由于我遇到了与您相同的问题(来自VSSTFS心态)并且在过去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 :(得分:39)

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

那为什么那么棒?因为没有中央回购,你必须有权去做你的工作。即使没有互联网访问,您也可以在本地计算机上提交,分支和聚会。然后,当您再次建立连接时,可以将更改推送到您有权访问的任何其他git仓库。因此,虽然大多数人将特定的回购视为中央回购,但这是一个流程选择,而不是git要求。

所有要说明的是你将自述文件提交给当地的回购协议。然后,无论何时选择,您都可以将更改从本地仓库推送到任何其他仓库。这很漂亮!

答案 2 :(得分:12)

  

如果我还没有设置远程存储库,Git怎么知道在哪里提交我的README文件?

您正在提交到本地存储库(这是一个具有自己的更改控件的正确存储库;它不仅仅是本地检出...因为您在本地创建它,它不是甚至 a本地结账!)。

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

答案 3 :(得分:10)

你引用的陈述是正确的。

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

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

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

答案 4 :(得分:0)

例如,在github上需要一个远程存储库实例仅是与其他程序员共享代码,因为他们只能访问您的git repo(除非他们使用您的ip连接到您的PC,否则他们只能访问(仅针对您的更改而不是其他程序员的更改),这就是为什么将您的更改从本地存储库提交到远程/中央存储库的原因,以便其他开发人员可以将其签出,并最终获得与该软件相同的状态。但是最后,如果您是唯一的开发人员,则实际上并不需要远程/中央存储库。