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. SAP S4CRM和C4C的技术比较

    如果您对SAP S/4HANA for Customer Management(以下简称S4CRM)和SAP Cloud for Customer(以下简称C4C)不甚熟悉,那我建议您可以先浏览我之前 ...

  2. Javascript作业—封装type函数,返回较详细的数据类型

    Javascript作业—封装type函数,返回较详细的数据类型 思路: 1 取typeof的值,如果是数字.函数等非对象类型,直接取类型 2 如果是object类型,则调用Object.protot ...

  3. 使用node.js + socket.io + redis实现基本的聊天室场景

    在这篇文章Redis数据库及其基本操作中介绍了Redis及redis-cli的基本操作. 其中的publish-subscribe机制应用比较广泛, 那么接下来使用nodejs来实现该机制. 本文是对 ...

  4. json 序列化和反序列化的3个方法

    https://www.cnblogs.com/caofangsheng/p/5687994.html

  5. redis list类型

  6. 在写移动端时,a标签或者input标签等 在手机上点击背后会有阴影的解决办法

    a,input{-webkit-tap-highlight-color:rgba(255,0,0,0);} 被背景设置成透明的就行了

  7. Shell编程学习之Shell编程基础(一)

    这篇随笔将要介绍关于Shell编程的基本知识,这些将会在假设你已经熟悉了Linux系统和命令行的基本知识. 构建基本脚本 你应该了解或熟悉使用Shell命令行了,但是只是使用Shell命令行的命令,有 ...

  8. JSP页面字符集设置

    错误提示: HTTP Status 500 - /test1.jsp (line: 2, column: 1) Page directive must not have multiple occurr ...

  9. 经典sql语句汇总

    1,某条数据放首位,其他倒序并分页 select * from Student order by( case     when id='2'  then 1 ELSE 4 END),id desc l ...

  10. Windows API窗口绘图程序设计

    任务目标 设计一个简单的Windows 窗口程序,在程序窗口内任意位置按下鼠标左键,可绘制范围在10-100之间随机大小的正方形.并且显示的正方形用红色填充. 效果图 小结 程序先是触发鼠标左键点击事 ...