81

如果我理解正确的话,Git 有两种存储库:一种称为本地存储库,另一种称为远程存储库。关于这两种类型的存储库,我的问题非常幼稚。

说的对吗

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

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

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

  • mkdir 我的项目
  • 光盘我的项目
  • 混帐初始化
  • 触摸自述文件
  • git 添加自述文件
  • git 提交 -a -m "

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

我希望我很清楚。

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

4

5 回答 5

79

由于我遇到了与您完全相同的问题(来自VSSTFS思维方式),并且在过去 3 天开始理解。我相信这些图表对于其他被困在那里的人来说更有助于理解整个画面。

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

Git流程图1

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

Git流程图2

于 2015-08-13T06:35:53.247 回答
56

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

那为什么这么棒呢?因为没有中央仓库,您必须有权访问才能完成工作。即使没有 Internet 访问,您也可以在本地计算机上的自己的 repo 上提交、分支和聚会。然后,当您再次建立连接时,您可以将更改推送到您有权访问的任何其他 Git 存储库。因此,尽管大多数人将特定存储库视为中央存储库(存储库),但这是一个过程选择,而不是 Git 要求。

所有这一切的重点是声明(就像其他人一样)您将 README 提交到本地存储库。然后,无论何时选择,您都可以将更改从本地存储库推送到任何其他存储库。这很漂亮!

于 2012-10-25T15:46:01.817 回答
17

您引用的陈述是正确的。

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

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

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

于 2012-10-25T15:36:02.933 回答
13

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

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

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

于 2012-10-25T15:37:24.713 回答
0

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

于 2019-08-25T13:20:32.370 回答