如果我理解正确的话,Git有两种仓库:一个叫本地,另一个叫远程。我的问题是关于这两种类型的存储库的非常天真的问题。
这么说对吗
- Git local repository是我们要进行本地更改的地方,通常这个本地仓库在我们的电脑上。
- Git远程仓库是服务器之一,通常是位于42英里外的机器。
另一个问题:一些教程向我展示了此工作流
- mkdir我的项目
- cd我的项目
- 初始化
- touch自述文件
- git add读我档案
- git提交-a -m“
我看到git init
创建了一个本地仓库给myproject。我不明白的是git commit
命令。如果我还没有设置远程仓库,Git怎么知道我的README
文件提交到哪里?
我希望我说得很清楚。
[编辑]我使用Git的方式可能与其他人不同:我用一个私有的Git仓库来备份我的代码。所以我想我确实需要一个远程仓库。在这种情况下,本地仓库应该是废话。我说的对吗?谢谢你的澄清。这些都是我在其他地方找不到答案的最天真的问题...
5条答案
按热度按时间cs7cruho1#
由于我经历了和你完全一样的问题(* 来自VSS和TFS思维模式 *),并且在过去的3天里开始理解。我相信这些图表会更有助于理解其他人被困在那里的全貌。
从:https://greenido.files.wordpress.com/2013/07/git-local-remote.png?w=696&h=570
另一个,来自https://wiki.lsr.ei.tum.de/lib/exe/fetch.php?media=nst/programming/git_flow.jpg&w=500&tok=e87798
fdx2calv2#
Git是一个 * 分布式 * 版本控制系统,它让Git变得很棒。你的本地仓库和其他Git仓库有着完全相同的特性和功能。所以服务器上的Git仓库和GitHub上的Git仓库是一样的(GitHub增加了额外的特性,但在它的核心,你处理的是Git仓库),它和你同事的本地仓库是一样的。
那么,为什么这很棒呢?因为没有中央存储库,你必须访问它才能完成你的工作。即使没有互联网连接,你也可以在本地机器上自己的存储库上提交、分支和聚会。然后,当你再次连接时,你可以把你的更改推送到你可以访问的任何其他Git存储库。所以,尽管大多数人把一个特定的存储库当作中央存储库(repository),这是一个过程的选择,而不是Git的要求。
这一切的重点是声明(像其他人一样)您正在将README提交给本地repo。然后,无论何时,您都可以选择将更改从本地repo推送到任何其他repo。这非常漂亮!
dgiusagp3#
你引用的陈述是正确的。
您根本不需要远程存储库。
你可以拥有完整的git体验,包括提交、分支、合并、重定基等等,而只需要一个本地仓库。
远程存储库(例如GitHub)的目的是向全世界(或某些人)发布代码,并允许他们读写代码。
只有当您将本地提交
git push
到远程仓库,或者当您从远程仓库git pull
其他人的提交时,远程仓库才会涉及。9lowa7mx4#
如果我还没有设置远程仓库,Git怎么知道我的README文件提交到哪里?
您正在提交到您的本地存储库(它是一个具有自己的更改控制的适当存储库;它不仅仅是一个本地 checkout ......因为您是在本地创建的,所以它 * 甚至 * 都不是本地 checkout !)。
如果要将更改发送到远程存储库(以备份更改、使更改可供团队的其他成员使用或将更改发布到全世界),则必须推送更改。
5vf7fwbs5#
例如,在github上需要一个远程存储库示例只是为了与其他程序员共享代码,因为他们可以“直接访问你的git存储库(除非他们使用你的ip连接到你的pc,否则他们只能访问你的更改,而不能访问其他程序员的更改),这就是为什么要把你的修改从你的本地仓库提交到远程/中央仓库,这样其他的开发者就可以把它们 checkout 来,最后得到一个相同的软件状态。但最终,如果您是唯一的开发人员,您并不真的需要远程/中央回购。