git branch看不到分支_Git最全总结

论坛 期权论坛     
选择匿名的用户   2021-6-2 17:51   647   0
<div style="font-size:16px;">
<p>Git与SVN的主要区别</p>
<h3 class="pgc-h-arrow-right">Svn是集中式的版本控制系统,而git是分布式的</h3>
<p>集中式就存在单点故障风险,一旦SVN的远程仓库挂掉了,那我的本地项目再也不能做提交,也不能做分支的切换,也不能够干和版本管理相关的任何事情。更极端一点,如果svn的服务器磁盘故障,虽然我们可能利用某些员工本地的快照版本尽可能恢复工程,但是当我们把这个相对完整的版本重新部署到服务器的新仓库时,将会丢失所有的历史版本包括日志。</p>
<p>git是分布式的,表示我们每个人的本地项目都包含一个完整Git仓库。这一点一定要牢记,<strong>本地也是一个仓库</strong>。</p>
<p>.svn只是简单的保存一些版本信息,但是如果你把.git目录的体积大小跟.svn比较,你会发现它们差距很大。因为.git目录是处于你的机器上的一个克隆版的版本库,并不只提取最新版本的文件快照, 而是把代码仓库完整地镜像下来,包括完整的历史记录。</p>
<h3 class="pgc-h-arrow-right">基本工作原理的不同</h3>
<p>这部分最关键,请耐心看完。理解git的思想,而不是单纯的会使用几个命令。知其然,更要知其所以然。</p>
<p>SVN是记录每个文件每个版本的差异变化,可以说是<strong>基于文件差异的版本控制</strong></p>
<div class="pgc-img">
  <img alt="50992da307781207fb2f359b4b55fc53.png" src="https://beijingoptbbs.oss-cn-beijing.aliyuncs.com/cs/5606289-716e6e4afbb3f669834b449aa37e51a6.png">
</div>
<p>如图,svn是存储每个文件在版本的不断迭代中产生的<strong>差异</strong>。</p>
<p>git不一样。如下图所示,git在你每次提交时,都会对所有文件产出一个快照。当然,如果文件没有修改,本次的快照只是生成一个链接,指向之前的文件,不会再copy一份文件。这和docker的分层镜像有点相似。</p>
<div class="pgc-img">
  <img alt="718b4d2bf91ef4dda13949203ffd6178.png" src="https://beijingoptbbs.oss-cn-beijing.aliyuncs.com/cs/5606289-f006b344e3ecfef202b1577336c0a4a5.png">
</div>
<p>对比两张图,git倾向于纵向切分,每一个版本是一个清晰独立的版本。而svn的每一个版本,需要在前一个版本的基础上追加差异才能得到。</p>
<h3 class="pgc-h-arrow-right">代码提交方式</h3>
<p>svn相对来说更容易上手,更新代码--&gt;开发代码--&gt;提交代码commit</p>
<p>git相对来说要复杂一点,更新代码--&gt;开发代码--&gt;add --&gt;commit --&gt;push</p>
<p>为什么步骤这么多,因为<strong>本地也是一个仓库</strong>。</p>
<h3 class="pgc-h-arrow-right">本地操作</h3>
<p>因为git在本地是一个完整的仓库。所以绝大部分git命令都不需要访问远程仓库。</p>
<p>例如要浏览项目的历史,Git 不需外连到服务器去获取历史,只需直接从本地数据库中读取。</p>
<h2 class="pgc-h-arrow-right">Git理论基础</h2>
<p>首先明确git中的术语</p>
<h3 class="pgc-h-arrow-right">仓库</h3>
<div class="pgc-img">
  <img alt="cc5094b2f096e78dea5f5fb6c6b6b30b.png" src="https://beijingoptbbs.oss-cn-beijing.aliyuncs.com/cs/5606289-2e412a849d8dca8b85bb6cd06c45900f.png">
</div>
<p>workspace:工作区。当前你修改的代码所在的地方。</p>
<p>index:暂存区。执行 git add命令后变动会提交到这。进入暂存区的变动才开始被git管理。</p>
<p>repository:本地仓库。git commit命令</p>
<p>remote:远端仓库/中央仓库。git push命令。</p>
<p>下面这张图更详细一点:</p>
<div class="pgc-img">
  <img alt="b12c0fab0a5a1c89fba3a1e98242a84e.png" src="https://beijingoptbbs.oss-cn-beijing.aliyuncs.com/cs/5606289-5e81db103cba1bfdf92093ea88ed3453.png">
</div>
<h3 class="pgc-h-arrow-right">分支</h3>
<p>有人把 Git 的分支模型称为它的“必杀技特性”,也正因为这一特性,使得 Git 从众多版本控制系统中脱颖而出。为何 Git 的分支模型如此出众呢?Git 处理分支的方式可谓是难以置信的轻量,创建新分支这一操作几乎能在瞬间完成,并且在不同分支之间的切换操作也是一样便捷。理解和精通这一特性,你便会意识到 Git 是如此的强大而又独特</p>
<p>前面我们讲过,<strong>Git 保存的不是文件的变化或者差异,而是一系列不同时刻的 快照 。</strong></p>
<p>Git 是怎么创建新分支的呢?很简单,它只是为你创建了一个可以移动的新的指针。</p>
<div class="pgc-img">
  <img alt="173a4add417bca325abe4c32b9d276ea.png" src="https://beijingoptbbs.oss-cn-beijing.aliyuncs.com/cs/5606289-47bf4b828bfb33e986da914fed1a443b.png">
</div>
<p>如图,最早的提交是98ca9,每次提交后,整个master分支不断变长。HEAD是一个特殊指针,告诉git,我们现在在哪个分支上。</p>
<blockquote>
  <p>备注&#xf
分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP