Git 自述
Git 是由伟大的电脑程序员Linus Torvalds编写的一个开源的,分布式的版本控制系统软件。

Git 核心原理
Git 利用底层数据结构,通过指向索引对象的可变指针,保存文件快照。

PS:简单理解就是git是对象数据库,把git仓库里面文件(源码,图片,声音等文件)转化成一个对象数据,并记录在git仓库里面所有的文件增删改操作。

Git 工作原理

1.git仓库下,被跟踪的文件所有操作(增删改)之后,就会对这些文件快照,然后保存到暂存区,当提交更新的时候,就会生成一条操作记录,保存到git的目录中去。

PS: 这里的git目录指项目中.git的目录,这个目录在windows上是隐藏的,如果想查看该目录,请设置文件夹选项,显示隐藏的文件、文件夹和驱动器。

Git 特点

开源:使用c语言编写的,开放源代码,任何人都阅读源码,自由修改。

灵活:运行性能比Subversion快。(无论是创建分支还是合并分支都是非常方便快捷)

易于修复数据,不易损坏数据。

不占空间资源。

分布式:每个客户端都有一个独立于远程服务器的本地仓库, 即使是在网络离线状态下,依然可以继续进行版本管理。

每个客户端都是可以从远程仓库克隆完整的仓库与提交历史记录到本地仓库。

每个客户端都拥有属于自己的访问权限,不受其他人影响。

每个客户端之间都可以互相推送补丁。

安全:拥有严格的代码提交权限体系。

使用SHA-1算法验证数据的完整性。

Git 基本概念

工作区:指当前目录受git控制的目录。

暂存区:指当前目录受git控制的目录内文件改动。

本地仓库:指本地电脑上建立的git仓库,通过commit提交文件到本地仓库。

远程仓库:指非本电脑上建立的git仓库,(远程主机建立的git仓库),通过push提交文件远程仓库。

 
GIt 文件状态
已跟踪:当前目录下的文件已受git版本控制。
PS: 已跟踪文件下有三种状态。
         已提交:已跟踪文件已经保存在本地git数据库中。

已修改:已跟踪文件有改动,但还没有提交保存。
         已暂存:已跟踪文件中的已修改文件放在下次提交时要保存的清单中。
未跟踪:当前目录下的文件未受git版本控制。
 

Git 分支
master分支,指主分支,一般默认存放稳定版,发布版本的项目。
PS:建议设置为受保护的状态(不能轻易修改),各个分支推送请求不要自动合并master分支。
子分支,可以有多个分支。
常见分支:feature/topic分支:新功能分支。
                  release分支:正式发布分支,可理解为可执行分支。(类比master分支)
                  bug/fix/pu:有漏洞,待修复,待改进的分支。
                  dev:正在开发的分支,各个开发人员各自开发的分支。
                  next:合并稳定新功能的分支。
                  maint:除错维护的分支。

Git 分支获取

fetch:本地仓库更新到远程仓库的版本,不会合并分支。

此方法需要通过git merge合并分支。

pull:工作区更新到远程仓库的版本,自动合并分支并提交。

此方法容易引起文件内容冲突。

Git 分支合并

rebase:无需创建提交,把其他某一条分支的更改应用到另一个分支上,(记住,另一个分支不一定是master分支)

此方法虽然保证线性提交记录,但偶尔会引起文件内容冲突,会删除日志中提交。

merge:创建提交,把当前某一条分支的所有更改都合并到另一个分支,包括提交历史。(记住,另一个分支不一定是master分支)

此方法虽然不会保持线性提交记录,同时会增加所有人的提交记录,难以追溯属于自己的提交记录。

PS:慎用rebase,避免把rebase共享远程仓库。

补充:使用SVN 还是 Git。
           如果项目参与的人员不多的话,规模不大的项目,保密性强,对Git不熟悉的团队,建议使用SVN。
           如果项目参与的人员多,规模大的项目,保密性不强,对Git熟悉的团队,建议使用GIt。(这里不是说GIt的保密性不强,而是项目只能在特定环境下进行开发,并且只能是自己搭建远程
仓库,不是使用第三方代码托管服务所搭建的远程仓库。)
 
总结:强烈推荐使用git,因为git是一个性能卓越的版本控制系统。
    

Git上手:Git扫盲区的更多相关文章

  1. Git上手指南

    (写在最前:这篇随笔是我在学习git时参考资料+实践出来的,其中一些问题是在实践中遇到的,希望对大家有帮助,还有很多不完整的地方.如果有什么错误的地方欢迎随时向我提出来) 在Git教程之前,我们先来了 ...

  2. 快速上手git gitlab协同合作

    简单记录,整理. 摘要 为方便大家快速上手Git,并使用Gitlab协同合作,特编写此手册,手册内容不会太丰富与深入.主要包含如下内容: Git 使用教程1.1 安装1.2 常用命令1.3 版本控制1 ...

  3. 版本管理神器git上手

    由于以前折腾过svn,虽然最终没有用成功,但是也算有经验,git入门还是比较简单的. 在新目录下建立初始化版本库  : git init git add file git add file2 git ...

  4. Git上手:使用Tortoisegit操作Git

    在工作中,为了提高git使用效率,更多会采用git图形化工具来操作git.(特殊情况下才使用git命令行操作git) git自带的图形化工具界面不够友好,就选择第三方git图形化工具,市面上第三方gi ...

  5. 五分钟上手Git

    团队开发中.遵循一个合理.清晰的Git使用流程.是非常重要的.否则,每一个人都提交一堆杂乱无章的commit,项目非常快就会变得难以协调和维护.以下是ThoughtBot 的Git使用规范流程.我从中 ...

  6. git上手简洁手册

    下载安装git 创建文件夹:learngit 用Git CMD进入文件夹: cd learngit 用Git CMD初始化git: git init 创建文件:新建一个文件在learngit文件夹下, ...

  7. 从VSS到SVN再到Git 记Git的基本操作

    Source code control 一直是软件开发过程中重要的环节,从最初的纯文件备份,到使用工具进行管理.Source code control 工具的作用也不仅仅只是单纯的对同一个版本进行管理 ...

  8. [Git] 还原Git上commit,但是没有push代码

    直接在Idea上操作2步解决: 1. 找到: 2. 在To Commit里面填写:HEAD^,表示将commit的信息还原为上一次的,需要多次直接reset多次即可: 使用命令行:原理一样 以下内容转 ...

  9. 命令行操作svn和git和git

    前几天在写代码的时候电脑突然坏掉,老大交代的任务没完成,非常痛恨自己用svn或者git保存代码,相信很多程序员遇到过,硬盘坏掉,存在硬盘中的代码丢失,无法找回的问题,svn和git可谓程序员界的福音, ...

随机推荐

  1. java——栈和队列 面试题

    (1)栈的创建 (2)队列的创建 (3)两个栈实现一个队列 (4)两个队列实现一个栈 (5)设计含最小函数min()的栈,要求min.push.pop.的时间复杂度都是O(1) (6)判断栈的push ...

  2. Google搜索引擎使用小技巧

    相信大家都知道,利用Google等搜索引擎进行信息查证是翻译过程中十分重要的一环.事实上,掌握信息搜索的技巧和方法,不仅对翻译工作大有帮助, 在网络信息时代,学会充分利用搜索引擎,在很多情况下都可以达 ...

  3. 软件架构中的SOA架构有哪些特点?

    面向服务的架构(SOA)是一个组件模型,它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来.构建在各种各样的系统中的服务可以以一种统一和通用的方式进行交互. SOA是一 ...

  4. 2017.9.22 HTML学习总结--JavaScript脚本语言

    接上: 1.JavaScript脚本语言 定义:javascript是一种简单的脚本语言,可以在浏览器中直接运行, 是一种在浏览器端实现网页与客户交互的技术javascript代码可 以直接运行在ht ...

  5. BCB:如何在BCB中使用CodeGuard

    www.educity.cn 发布者:xjxyj2006 来源:网络转载 发布日期:2013年12月13日 文章评论 发表文章 一. 为什么写这篇东西 自己在使用 BCB5 写一些程序时需要检查很多东 ...

  6. css隐藏元素的六类13种方法

    隐藏元素的方法 隐藏元素的方法可以总结为六类:直接隐藏.对溢出内容隐藏.对元素透明度进行调整.将元素移除当前屏幕.对元素的层级关系进行调整.对元素进行裁剪 只有对元素的透明度进行调整才可以点击,其余都 ...

  7. maven简单了解,没有Maven和使用Maven的区别

    Maven提供了开发人员构建一个完整的生命周期框架.开发团队可以自动完成项目的基础工具建设,Maven使用标准的目录结构和默认构建生命周期.Maven让开发人员的工作更轻松,同时创建报表,检查,构建和 ...

  8. 页面js中文乱码解决

    <script src="../Content/kindeditor-4.1.5/kindeditor.js" charset="utf-8" >& ...

  9. cncert阅读报告

    信息安全阅读报告 Problem 1: 国家计算机网络应急技术处理协调中心(简称“国家互联网应急中心”,英文缩写为“CNCERT”或“CNCERT/CC”)作为我国非政府层面网络安全应急体系核心技术协 ...

  10. pip命令小结

    pip的另一种调用方式 python -m pip通过指定python的名字来指定特定的pip pip freeze > 项目目录/requirements.txt导出pip中下载的包目录 pi ...