git,github,fork&branch的核心概念是什么?git与SVN相比如何?

swa*_*tin 20 svn git branch fork github

我一直在使用Github,但是我对Git背后的一些关键概念感到有些困惑.

我对VCS的背景是从Source Safe开始,然后转换为SVN和TFS.我想我一直在思考CVS系统,比如SVN和TFS.

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

从技术意义上讲,Fork意味着什么.它是分支的"类型"吗?

Wat在git中的分支意味着什么?它和SVN一样吗?

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

Ana*_*tts 38

以下是了解Git的方法:

  1. 忘掉你对其他VCS的所有了解(暂时!)
  2. 阅读Git Parable.真的读过它,如果你撇去,你会错过任何东西,只是试着填补你现有的SCM知识的空白,这就是让你失望的原因.事实上,如果你真的想了解,请大声朗读博客文章.

Git的核心只是一种保存和恢复快照的方法.每个快照都有一个"ID"(SHA1),并且可能有一个或多个"refs"(指针).分店?只是特定快照的友好名称.标签?一样.头?这只是当前快照的"代名词".方便地,这些快照每个都带有对已更改内容的描述 - 此描述是提交消息.


Mic*_*ant 9

Git是一个DVCS(分布式版本控制系统)

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

Git是一种DVCS(分布式版本控制系统),它使您能够经常保存文件的副本("版本"),并能够合并超过1人完成的工作,并且您还可以脱机工作.

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

Git通过保存整个文件将每个更改存储到文件中.它在这方面与svn不同,你可以在不通过delta变化"重新创建"任何单个版本的情况下使用它.

Git不会"锁定"文件并需要对编辑进行独占锁定(像pvcs这样的旧系统会浮现在脑海中).它实际上是在拉取或提取期间将文件更改(在同一文件中!)合并在一起的一项了不起的工作.您需要进行手动更改的唯一时间是两次更改涉及相同的代码行.


分行

这是您想要保留主代码,复制(分支)然后在该分支内工作的时候.完成后,将分支合并回主存储库.其中一个例子可能是您正在升级到新版本.
一些商店和个人在不同的分支机构中完成所有工作,无论是功能,错误修复还是家务,还有一个单独的流程和/或指定人员将这些分支合并到主服务器中.
因此,对于分支机构,您正在管理分支,而使用分支,其他人控制接受代码.这仍然是标准用法.

Github上

github(远程)是一个远程源,如果您已经(或被添加到)这样的存储库,您通常会将这些已提交的更改推送到其中.
所以本地和远程实际上是截然不同的.

当你'叉',即点击 - 在此输入图像描述,在github上,你在你的 github帐户中创建代码的副本.第一次执行此操作时可能会有点微妙,因此请务必确保查看其下方列出的代码库的存储库 - 原始所有者或"分叉"和您,例如在此输入图像描述

获得本地副本后,您可以根据需要进行更改(通过拉动并将其推送到本地计算机).当你完成后,你提交一个"拉请求"顶部原始存储库所有者/管理员(听起来很奇特,但实际上你只需点击这个: - 在此输入图像描述)他们'拉'进来.

克隆

对于一起处理代码的团队来说,更常见的是"克隆"存储库(单击存储库主屏幕上的"复制"图标).然后,本地输入git clone [paste]这将在本地设置你,你可以直接推送到共享的github位置.

可视化

我没有核心概念的可视化,但是如果你想看看这些变化是如何工作的,你就无法用我称之为"地铁地图"的gui击败可视化工具gitg(gitx for mac)(特别是伦敦地铁),非常适合展示谁做了什么,事情如何变化,分歧和合并等等.你也可以用它来提交和管理你的本地变化......

在此输入图像描述