Git介绍

本质上,Git是一套内容寻址(content-addressable)文件系统,而和我们直接接触的Git界面,只不过是封装在其之上的一个应用层。这个关系颇有点类似于计算机网络中应用层和下属层的关系。在Git中,那些和应用层相关的命令(也就是我们最常用的命令,如git commit、 git push等),我们称之为porcelain命令(瓷器之意,意为成品、高级命令);而和底层相关的命令(几乎不会在日常中使用,如git hash-object、git update-index等),则称之为plumbing命令(管道之意,是连接git应用界面和git底层实现的一个管道,类似于shell,底层命令)。要了解Git的底层原理,就需要了解Git是如何利用底层命令来实现高层命令的。在此之前,让我们先来看一下Git的目录结构,和各个文件在Git中的作用。

  • git与github关系
    git就是一个版本控制工具,github是项目托管平台
  • git与svn区别
    git是分布式的版本控制系统 svn是集中式的版本控制系统
  • 集中式
    版本都存放在中央服务器,工作的时候先从中央服务器获取最新版本,然后写代码,写完后再把代码推送给中央服务器
  • 分布式
    首先分布式没有中央服务器,每一台电脑都是一个版本库,每一个同事之间互相推送修改的内容,但有的同事可能不能互相访问,怎么办呢?没关系这时候其实会有一台服务器器充当远程仓库,来进行信息的修改,这个服务器就是平时我们clone代码的那台服务器

Git基本概念

  • 版本
    广义上讲,文件的每一次修改都可以称为一个版本。版本管理系统正是用来管理和跟踪文件的修改的。在版本管理系统中,每一次提交会形成一个版本记录,这些记录串接起来就是整个项目的演化历史。

  • 版本库
    版本库,也叫版本仓库、仓库,英文名为Repository,经常简写为Repo,是Git用来进行版本管理的主要场所。

在Git中使用init或clone创建一个新的版本库后,就会在当前目录下生成一个.git目录,这个就是Git的版本库,其中保存着本项目的各文件数据、提交记录、分支、配置等等数据。如果我们把.git目录删除的话,版本库也就丢失了。这一点和SVN不同,SVN会把相关数据分散到各个文件所在的目录中。

  • 工作区(Working Directory)
    工作区就是版本仓库所在的目录,其中的文件处于Git版本库的管理之下。使用init或clone创建一个新的版本库后,当前目录就成为了工作区。

  • 本地仓库 vs 远程仓库
    首先,本地仓库和远程仓库没有本质区别。在使用Git时,为了方便团队成员之间交换代码,通常会专门部署一台“服务器”作为公共仓库,每个人可以向公共仓库中提交自己的代码,也可以从公共仓库中更新其他人的最新提交。对大家来说,这个公共仓库就是一个远程仓库。

  • 克隆(clone)
    克隆就是复制一个已经存在的版本库。例如我们可以将公共版本库(远程仓库)克隆一份到自己的电脑上。

  • 提交(commit)
    将工作区中的代码合并到版本库中的操作就叫提交。每一次提交都会在版本库中留下一个记录,日后可以用其来进行对比、回退等操作。换句话说,处于工作区中但仍未提交的修改不会受到Git的保护,如果文件被删除了,或者改错了,将无法回退到之前的某个正确的状态(如果文本编辑器或IDE还没关的话说不定能弥补回这个错误)。

  • 推送(push) vs 拉取(pull)
    将工作区中的代码合并到本地仓库的操作叫做提交,而在版本库之间进行合并操作就不是提交了,叫做推送。因为对Git来说,两个版本库之间的关系是平等的,不存在谁“提交”给谁一说。

相应地,从另一个仓库中把代码合并到本地仓库的过程就叫拉取。

  • 分支
    每次提交是有先后关系的,正常来说,所有提交将会串成一条直线。而分支就是在原本的直线上分出去的岔路。一个分支从分出去的那一刻起,在其上的修改将完全独立于其他分支(除非你显式地将2个分支合并到一起)。

分支的演进过程很像物种的进化。物种在后代之间产生不同的变异,当一个群体中的变异积累到一定程度时,该群体很有可能有机会分化为一个新的物种,此后,新物种与原物种之间将平行进化。这个比喻只适用于演化出新分支的过程,但自然界中两个物种之间不太可能会合并(人工干预除外)

Git工作流

GIt常用命令速查

几张图就能轻松掌握Git常用命令和原理相关推荐

  1. Git 常用命令总结,掌握这些,轻松驾驭版本管理

    Git 常用命令总结,掌握这些,轻松驾驭版本管理 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn ...

  2. Git常用命令和Git团队使用规范指南

    1. 前言 在2005年的某一天,Linux之父Linus Torvalds 发布了他的又一个里程碑作品--Git.它的出现改变了软件开发流程,大大地提高了开发流畅度,直到现在仍十分流行,完全没有衰退 ...

  3. Git 常用命令速查表(图文+表格)【转】

    转自:http://www.jb51.net/article/55442.htm 一. Git 常用命令速查 git branch 查看本地所有分支 git status 查看当前状态  git co ...

  4. Git使用 从入门到入土 收藏吃灰系列(三) Git常用命令

    文章目录 一.前言 二.常用的命令 一.前言 参考安装Git 详细安装教程 参考视频B站 Git最新教程通俗易懂,这个有点长,感觉讲的精华不多 参考视频『Git』知道这些就够了_哔哩哔哩_bilibi ...

  5. Git 常用命令详解(二)

    2019独角兽企业重金招聘Python工程师标准>>> Git 是一个很强大的分布式版本管理工具,它不但适用于管理大型开源软件的源代码(如:linux kernel),管理私人的文档 ...

  6. Git——常用命令再学习

    目录 1. 全局配置授权信息 2. 仓库初始化 3. 版本回退 4. 工作区和暂存区 5. 远程仓库 6. 分支管理 7. 标签管理 8. 配置别名 小结 git常用命令 1. 全局配置授权信息 gi ...

  7. 【转载】Git 常用命令大全

    一. Git 常用命令速查 git branch 查看本地所有分支 git status 查看当前状态  git commit 提交  git branch -a 查看所有的分支 git branch ...

  8. Git 常用命令速查表(图文+表格)

    一. Git 常用命令速查 git branch 查看本地所有分支 git status 查看当前状态  git commit 提交  git branch -a 查看所有的分支 git branch ...

  9. git常用命令,分支操作,子模块

    Git 是一个很强大的分布式版本管理工具,它不但适用于管理大型开源软件的源代码(如:linux kernel),管理私人的文档和源代码也有很多优势(如:wsi-lgame-pro) 二. Git 常用 ...

最新文章

  1. 创建操作/删除多行数据的UITableView的细节
  2. 几何画板表现两集合的差集的教程
  3. android调用c闪退未看到log,解决:Android开发 看不到崩溃的日志
  4. httprunner框架学习总结
  5. [hadoop新实战2]hadoop伪分布式安装序列(支持ubuntu和redhat)
  6. Android Gradle 自定义Task 详解
  7. WebAPI(part4)--操作元素
  8. Redis安装与配置( Windows10 )
  9. HP_UX常用指令列表(转,整理过,方便使用)
  10. spark中dataframe解析_Spark-SQL
  11. Android之下拉刷新的ListView
  12. 第一章 Linux是什么
  13. linux龙芯自动挂载u盘,Windows Subsystem for Linux (WSL)挂载移动硬盘U盘
  14. oracle备份密码文件,[数据库]Oracle数据库备份dmp文件,使用cmd命令导入导出步骤,以及忘记Oracle密码_星空网...
  15. 民族融合 —— 魏晋南北朝
  16. 同样当程序员,产值是比别人多出5倍以上,拿的工资是别人的2/3左右,你是领导你会怎么样妥善处理?...
  17. 华为/华三IS-IS单区域配置
  18. python老齐_python-basic
  19. 前沿重器[25] | 聊聊对话系统:多轮对话
  20. FPGA结构分析——IDELAY2,网口储备点3

热门文章

  1. 网络安全的隐形守护者——白帽黑客
  2. Zemax自学--4(光学自动设计)
  3. 地图算法之点是否在圆内
  4. 自然码双拼26个韵母与键位的对应表
  5. 毕业人数历史新高,IT行业又成就业首选:不仅就业机会多还能拿高薪?!
  6. 52、Flutter之事件总线
  7. 【前端】javascript:; 是什么
  8. 关于美国计算机奥赛USACO,你想知道的都在这
  9. php 网页闹钟,120.页面小闹钟 - Lucky_Me的个人空间 - OSCHINA - 中文开源技术交流社区...
  10. html radio样式美化