首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >git、github、fork和branch的核心概念是什么。git和SVN相比如何?

git、github、fork和branch的核心概念是什么。git和SVN相比如何?
EN

Stack Overflow用户
提问于 2012-02-09 09:16:33
回答 5查看 4.3K关注 0票数 20

我使用Github已经有一段时间了,但我对Git背后的一些关键概念感到有点困惑。

我的VCS背景是从Source Safe开始的,然后过渡到了SVN和TFS。我想我还停留在对CVS系统的旧思维上,比如SVN和TFS。

在Git中被认为是服务器端和客户端。据我所知,它们之间没有明确的区别。

从技术上讲,Fork是什么意思?它是分支的“类型”吗?

分支在git中是什么意思?和SVN是一样的吗?

此外,我一直在寻找Git核心概念的良好可视化,但还没有找到任何适合我的。

EN

回答 5

Stack Overflow用户

发布于 2012-03-05 10:42:57

下面是如何理解Git的方法:

(temporarily!)

  • Read
  1. 忘记您所知道的所有关于其他VCS(temporarily!)
  2. Read VCS的信息。真的读过了,如果你略读,你会错过一些东西,只是试图用你现有的供应链管理知识来填补空白,这就是让你感到困惑的地方。事实上,如果你真的想理解,那就大声阅读这篇博文吧。

本质上,Git只是保存和恢复快照的一种方式。每个快照都有一个"ID“( SHA1),并且可以有一个或多个指向它的”ref“(指针)。一个分支?只是一个特定快照的更友好的名称。标签?同样的事情。头?这只是当前快照的“代名词”。方便的是,这些快照都附带了更改内容的描述-此描述是提交消息。

票数 38
EN

Stack Overflow用户

发布于 2012-02-09 09:26:07

DVCS是一个分布式版本控制系统(Distributed Version Control system)。

Git (本地)在提交文件的项目根目录下有一个目录(.git/)。

Git是一个DVCS (Distributed版本控制系统),它使您能够频繁地保存文件的副本(‘版本’),并能够合并由多个人完成的工作,您也可以脱机工作。

Git不同于更传统的CVS (代码版本系统),如SVN (Subversion)或CVS,它们确实有分支,但没有‘本地和远程’的概念(您的提交是直接到远程的)。使用git,您首先提交到本地存储库,然后将这些更改推送到远程。这鼓励更频繁的提交和在较小块中完成的工作。它还可以更好地支持离线工作,因为您可以在离线时提交,然后在下一次在线时同步和拉/推。

Git通过保存整个文件来存储对文件的每个更改。它在这方面与svn不同,你可以转到任何单独的版本,而不需要通过增量更改来“重新创建”它。

Git不会“锁定”文件,需要排它锁才能进行编辑(我想到的是pvcs之类的旧系统)。它实际上在合并文件更改(在同一个文件中)方面做了一件令人惊叹的工作。在拉取或取回期间集中在一起。只有当两个更改涉及相同的代码行时,才需要进行手动更改。

分支

这是当你想要保留主代码,制作一个副本(分支),然后在该分支中工作的时候。完成后,将分支合并回主存储库。这方面的一个例子可能是您正在升级到新版本。

一些商店和个人在单独的分支中完成所有工作,无论是功能、错误修复还是杂务,使用单独的流程和/或指定的人员将这些分支合并为主分支。

因此,通过分支,您可以管理分支,而通过分支,其他人可以控制接受返回的代码。无论如何,这是标准用法。

Github

github (遥控器)是一个远程源,如果您有(或被添加到)这样的存储库,您通常会将提交的更改推送到该远程源。

因此,本地和远程实际上是完全不同的。

当你‘分支’,也就是点击-

在github上,你在你的github账户中创建了一个代码副本。第一次做的时候可能会有点微妙,所以一定要查看代码库是在谁的存储库下列出的--要么是原始所有者,要么是“forked from”,而你,例如:

一旦您有了本地副本,您就可以根据需要进行更改(通过将它们拉入并推送到本地计算机)。当你完成后,然后你提交一个‘拉请求’顶部的原始存储库所有者/管理员(听起来很奇特,但实际上你只需点击这个:

),他们把它“拉”进去。

克隆

对于一起处理代码的团队来说,更常见的是‘克隆’存储库(单击存储库主屏幕上的‘复制’图标)。然后,在本地输入git clone粘贴,这将在本地设置您,您可以直接推送和拉取到共享github位置。

可视化

我没有一个核心概念的可视化,但如果你想看看这些变化是如何工作的,你不能用我称之为“地铁地图”的图形用户界面击败可视化工具gitg (适用于mac的gitx)。伦敦地铁),非常适合展示谁做了什么,事情是如何改变的,分歧和合并,等等。你也可以用它来提交和管理你的本地更改……

票数 9
EN

Stack Overflow用户

发布于 2012-02-09 09:53:23

与基于文件的CVS和SVN不同,Git是基于提交的。提交以提交树的形式存在于存储库中。git存储库有3个主要部分:工作目录、阶段和存储库目录。

Git没有中央存储库的绑定概念。存储库的每个克隆都包含其复制的存储库的提交和提交的完整历史记录。

fork仅仅是另一个存储库的克隆或副本。您对存储库副本所做的更改不会影响派生(克隆)的存储库。要将您的更改应用于原始存储库,您需要‘推’它们,或者让存储库所有者‘拉’出您添加的任何新提交。同样,其他人也会分叉你的分支(即复制你的副本)。而且,对其存储库的任何更改都不会影响您的存储库,除非您将这些更改拉入。

Git是一个很棒的工具。它不仅作为版本控制工作的一种方式,而且还使协作和实验变得更容易。而且它还有更多的东西。

我强烈推荐ProGit Book来帮助你更好地了解Git的方式和内容。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9204168

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档