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

zel*_*ell 54 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存储库来备份我的代码.所以我认为我确实需要一个远程存储库.在这种情况下,本地存储库应该是无意义的.我对吗?谢谢你的澄清.这些是我在其他地方找不到回复的最天真的问题......

Bis*_*nna 52

因为我遇到了与你一样的问题(来自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

  • @AndrewStephens拥有本地仓库的一个好处是,您可以选择推送到远程的提交.在您的本地仓库中拥有实验分支是非常常见的,您永远不会推送到远程.因此,只有您想要*与团队分享的内容才能共享.它也算不上额外的努力:一个`git push`命令就可以了. (3认同)
  • 有用的答案.来自TFS自己,我不相信当地的回购创意 - 感觉这是一个不必要的额外步骤,以便将变革推向团队. (2认同)

agm*_*min 44

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

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

一切是为了国家的点(像其他人那样),你提交你的自述文件到本地回购.然后,无论何时选择,您都可以将更改从本地仓库推送到任何其他仓库.这很漂亮!


Que*_*tin 13

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

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

如果要将更改发送到远程存储库(要备份它们,将它们提供给团队的其他成员,或将它们发布到全世界),则必须推送它们.


SLa*_*aks 12

你引用的陈述是正确的.

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

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

只有当git push您本地提交到远程存储库或者git pull其他人从中提交时,才会涉及远程存储库.