这篇随笔是在学习了廖雪峰老师的git教程之后写的总结,要看详细的基础级git介绍可以去http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000

如果想看更加详细的git介绍,可以去我们的团队博客http://www.cnblogs.com/buaase/p/5066288.html

如果还想看更更加详细的git介绍,可以去百度云盘下载https://pan.baidu.com/s/1nvq46U1  提取码tpah(好像不需要提取码)

以下介绍适合使用过git但是不明白git的朋友阅读

git的基本工作原理

工作区:实际上就是自己编写文件的环境,比如我用java写一个程序,在eclipse中编写的代码就是在工作区中;就相当于我们只是取到了仓库中的文件的镜像,然后对文件修改(事实上对磁盘上的文件作了修改),我们修改文件的地方就是工作区

暂存区:类似于git的一个缓存,在一次提交中,我们可能需要添加很多个文件,于是我们将需要提交的文件一个一个add到暂存区,add完成后,我们用commit命令将刚才所有的add一次性地提交到本地仓库

本地仓库:真git真正管理文件的地方,里面所有的文件都受git的管理,文件的修改,删除,git都有记录

远程仓库:默认名称是origin,远程仓库和本地仓库类似,但是在多人合作的时候,别人能看见远程仓库却不能看见你的本地仓库,每个人也有自己的本地仓库。在多人合作的时候,远程仓库放的往往是最新的代码,就是大家都认为正确的更新才push上去的(push是提交,pull是从远程仓库获取并合并到本地)。在每次提交到远程仓库之前一般都要进行git pull,这是为了避免远程仓库和本地仓库的不一致:远程仓库可能存在其他人修改过后的代码,而你本地仓库还是以前的旧代码,这个时候就需要将远程仓库的代码同步(pull)到本地仓库(可能和本地仓库的代码存在冲突,这个时候需要解决冲突),然后再讲本地仓库的代码提交(push)到远程仓库。

  add的过程是将工作区的文件修改信息放到暂存区,commit是将暂存区的文件修改信息告诉本地仓库,本地仓库就会记录修改信息,将文件版本更新(HEAD指针的变化),pull就是将远程仓库同步到本地仓库,push就是将本地仓库的内容同步到远程仓库

git分支策略

  git branch XX可以创建分支,git checkout XX可以切换到某一个分支:XX表示分支名

  一个分支就相当于一条线,每一个分支都进行独立的开发,互不影响。

  现实中,我们往往在master上发布版本(当需要发布新版本时才会使用,平时不会在master上修改代码),新建一个dev分支进行开发:当需要不新版本时,会将dev分支上的代码和master上的代码进行合并(merge),这样dev上的代码就会更新到master分支上。

  举一个例子来说:

  我们在做数学卷子的时候,正常一点的人(除开很牛逼的和那些无所谓的)都会选择在草稿纸上进行运算,感觉运算结果正确之后才会将结果写在试卷上,最后交卷。这就和分支策略类似:我们的master分支就是试卷,发布新版本就是向广大用户交卷;我么的dev分支就是草稿纸,不管我们在草稿纸上怎么运算,都不会对我们最终的成绩造成影响,只需要将最终运算结果写在试卷上即可(事实上还是不要让你的草稿纸太乱,以免自己都看不懂);我们可以用很多草稿纸来计算(题目比较复杂的话),然后将草稿纸A上的结果写在草稿纸B上,最后才将草稿纸B上的结果写在试卷上,就像我们会有很多分支一样。

冲突:如果我们在打草稿的过程中发现我们以前写在试卷上的结果有问题,这个时候就是冲突。在我们合并分支的时候,发现dev分支和master分支上都修改了同一内容,这个时候git就不知道到底该使用哪一个分支上的内容,于是会在冲突文件上标记(HEAD字样),这个时候只需要修改冲突文件,使其成为你想要的内容,然后重新提交即可。

bug分支:当我们用某种方式发现我们的选择题有问题(当然不是“左顾右盼”),我们就需要拿出草稿纸来进行计算,验证,修改,最后写上正确答案。问题即是bug,我们在遇到bug 的时候就可以另开一个分支来进行bug修改,修改完成之后再合并分支

git的几个命令

常用的add、commit、pull、push就不介绍了

1.git checkout –filename

这里的checkout不是切换分支,而是用仓库的filename文件替换工作区的filename文件,不管是删除还是修改,都可以复原。但是这样一来就会丢弃工作区的修改,就找不回来了

2.git stash

这个命令是暂存工作区的内容,比如我们急需修改某一个bug,但是现在的工作一时半会还不能完成,这个时候就可以使用git stash将工作区的内容保存起来。等到我们处理完bug之后,切回现在的分支,然后使用git stash pop将暂存的内容pop(弹)出来。另外,我们可以使用git stash list查看现在的stash中有哪些内容

3.git log

查看当前的commit信息,每个commit信息有对于的hash码,hash码具有唯一性

4.git reset --hard

这个命令是用来在本地进行回退的,在后面加上参数,可以实现回到某一个commit的状态,参数类型有

HEAD:最近的一次commit(其实就是git log的最新的一项),HEAD指针每一次都是指向最新的commit,当回退之后是指向log的最新的一项

HEAD^:上一次commit

HEAD^:上上次commit

hash码:回到hash码对应的那一次commit,hash码可以通过git log查看,回退之后,log里面没有的commit的log可以通过git reflog查看

Git基础级介绍的更多相关文章

  1. 1、git基础介绍及远程/本地仓库、分支

    1. Git基础介绍 基于Git进行开发时,首先需要将远程仓库代码clone到本地,即为本地仓库.后续大部分时间都是基于本地仓库上的分支进行编码,最后将本地仓库的代码合入远程仓库. 1.1. 远程仓库 ...

  2. git基础介绍

    git基础介绍 这是git操作的基础篇,是以前的写的操作文档,就没有进行手打,直接把图片贴进来了,你们担待哈,有不正确的地方可以指正出来,我将在第一时间去修改,多谢哈! 一.文件状态:git系统的文件 ...

  3. 一篇长文说 git 基础

    版本管理在产品级开发中是非常重要的一个部分,它涉及到团队协作,且影响到产品最终的发布.上线以及测试环节,当前最流行的版本控制系统是 git.git 内容非常多,本文尽量克制地来介绍 git 的基础内容 ...

  4. git基础及分支

    关于版本控制 git是一种分布版本控制系统,每一主机都保存了完整副本.必杀技是分支. 在Windows可安装git客户端msysgit. git基础 第一次看progit觉得有点不懂,不懂版本控制,一 ...

  5. java 网络编程(二)----UDP基础级的示例

    下面介绍UDP基础级的代码示例: 首先了解创建UDP传输的发送端的思路: 1.创建UDP的Socket服务.2.将要发送的数据封装到数据包中.3.通过UDP的socket服务将数据包发送出去.4.关闭 ...

  6. Git详解之二 Git基础

    Git 基础 读完本章你就能上手使用 Git 了.本章将介绍几个最基本的,也是最常用的 Git 命令,以后绝大多数时间里用到的也就是这几个命令.读完本章,你就能初始化一个新的代码仓库,做一些适当配置: ...

  7. 2.4 Git 基础 - 撤消操作

    2.4 Git 基础 - 撤消操作 撤消操作 任何时候,你都有可能需要撤消刚才所做的某些操作.接下来,我们会介绍一些基本的撤消操作相关的命令.请注意,有些撤销操作是不可逆的,所以请务必谨慎小心,一旦失 ...

  8. Git详解之二:Git基础

    Git 基础 读完本章你就能上手使用 Git 了(伯乐在线注:如果你对Git还不了解,建议从本Git系列第一篇文章开始阅读).本章将介绍几个最基本的,也是最常用的 Git 命令,以后绝大多数时间里用到 ...

  9. Git基础 —— Github 的使用

    Git 基础学习系列 Git 基础 -- 安装 配置 别名 对象 Git 基础 -- 常用命令 Git 基础 -- 常见使用场景 Git基础 -- Github 的使用 Github 的利用 Gith ...

随机推荐

  1. json2.js的作用与使用示例

    工作中,如果公司要求你兼容ie6.7,那么你可以辞职了,开个玩笑: 关于json,本文不作介绍,介绍一下json字符串和对象的相互转换: 在各大主浏览器及ie8+,我们可以使用内置方法JSON.str ...

  2. HDU 6318 Swaps and Inversions 思路很巧妙!!!(转换为树状数组或者归并求解逆序数)

    Swaps and Inversions Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Oth ...

  3. windows内核Api的学习

    windows内核api就是ntoskrnl.exe导出的函数.我们能够跟调用应用层的api一样,调用内核api. 只是内核api须要注意的是.假设函数导出了.而且函数文档化(也就是能够直接在msdn ...

  4. InnoDB数据页结构

    前言 ​ 关于数据库我们知道是通过内存对磁盘进行操作的,也知道数据会落实到磁盘上,但是数据在磁盘上的存储结构可能大家还不是很清楚. ​ MySQL服务器上负责对表中的数据的读取和写入的工作的部分是存储 ...

  5. 阿里云CentOS自动备份MySql 8.0并上传至七牛云

    本文主要介绍一下阿里云CentOS7下如何对MySql 8.0数据库进行自动备份,并使用.NET Core 将备份文件上传至七牛云存储上,并对整个过程所踩的坑加以记录. 环境.工具.准备工作 服务器: ...

  6. flink 常见问题整理

    1. xml-apis 冲突问题 javax.xml.parsers.FactoryConfigurationError: Provider for class javax.xml.parsers.D ...

  7. PCIE_DMA实例一:xapp1052详细使用说明

    一:前言 很多和我一样初学pcie的硬件工程师都会遇到这样一个问题,看了不少pcie相关的资料,还是搞不清这玩意儿到底该怎么用.于是我们打开ISE的core_generator工具,生成了一个pcie ...

  8. 【转】如何内网搭建NuGet服务器

    原文:http://www.cnblogs.com/zhangweizhong/p/7755332.html NuGet 是.NET程序员熟知的工具,它可以直接安装开源社区中的各个公用组件,可以说是非 ...

  9. SSM-CRUD入门项目——环境搭建

    一.项目概述 项目功能点: 1.分页 2.数据校验: jQuery前端校验+JSR303后端校验 3.ajax 4.RESTful风格的URI 技术点: 1.基础框架——SSM 2.数据库——MySQ ...

  10. IPC学习

    课下作业-IPC 要求: 研究Linux下IPC机制:原理,优缺点,每种机制至少给一个示例,提交研究博客的链接 共享内存 管道 FIFO 信号 消息队列 共享内存 共享内存可以说是最有用的进程间通信方 ...