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. 三线表是什么?R语言使用table1包绘制(生成)三线表、构建不分层的三线表
  2. android studio 多dex,AndroidStudio利用android-support-multidex解决64k的各种异常
  3. 在 Linux 上模拟系统负载
  4. 【收藏】在QGIS中添加Google Maps地图和卫星影像
  5. sklearn自学指南(part15)--广义线性回归
  6. 介绍一个能将任意关键字高亮实现的 Visual Studio Code 扩展
  7. 20世纪物理学巨人、诺奖得主菲利普安德森逝世,享年96岁
  8. is,as,sizeof,typeof,GetType
  9. 含有空格或者逗号的字符串反转最有效的办法——栈
  10. python mvc框架django搭建项目_Django笔记1:基础:创建虚拟主机和新项目
  11. Voleon Group:一家『纯』用机器学习策略的对冲基金
  12. 渗透测试——CFS三层靶机渗透
  13. u盘dos启动盘制作工具 v9.36正式版
  14. 基于微信小程序的物业维修报修系统设计与实现毕业设计毕设开题报告参考
  15. QGIS快速提取建筑和道路矢量
  16. vvic/搜款网API接口(item_search-根据关键词取商品列表 )
  17. 黑莓装Linux系统,“黑莓的Linux桌面管理器”──Barry的使用
  18. 微信用户与第三方网站用户的绑定策略(实现用户第一次登陆后永久免登陆)
  19. 手机照片删除了还能找回来吗?高手就是高手,精彩
  20. VS 关于GetLastError()返回码列表及对应的解释

热门文章

  1. Math-Model(三)高斯羽烟模型计算气体扩散浓度
  2. c语言strtok用法
  3. FS7050系列5V电压检测IC(芯片)
  4. Ubuntu系统查看硬件温度
  5. 劳累过度死亡谁来负责
  6. JavaScript------你真的会用console来调试打印么?
  7. html--电子闹钟
  8. js实现网页左侧导航条,鼠标经过显示隐藏的面板
  9. 最短路径 输出路径 Dijkstra算法
  10. vue3动态路由及菜单