Git基础级介绍
这篇随笔是在学习了廖雪峰老师的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、git基础介绍及远程/本地仓库、分支
1. Git基础介绍 基于Git进行开发时,首先需要将远程仓库代码clone到本地,即为本地仓库.后续大部分时间都是基于本地仓库上的分支进行编码,最后将本地仓库的代码合入远程仓库. 1.1. 远程仓库 ...
- git基础介绍
git基础介绍 这是git操作的基础篇,是以前的写的操作文档,就没有进行手打,直接把图片贴进来了,你们担待哈,有不正确的地方可以指正出来,我将在第一时间去修改,多谢哈! 一.文件状态:git系统的文件 ...
- 一篇长文说 git 基础
版本管理在产品级开发中是非常重要的一个部分,它涉及到团队协作,且影响到产品最终的发布.上线以及测试环节,当前最流行的版本控制系统是 git.git 内容非常多,本文尽量克制地来介绍 git 的基础内容 ...
- git基础及分支
关于版本控制 git是一种分布版本控制系统,每一主机都保存了完整副本.必杀技是分支. 在Windows可安装git客户端msysgit. git基础 第一次看progit觉得有点不懂,不懂版本控制,一 ...
- java 网络编程(二)----UDP基础级的示例
下面介绍UDP基础级的代码示例: 首先了解创建UDP传输的发送端的思路: 1.创建UDP的Socket服务.2.将要发送的数据封装到数据包中.3.通过UDP的socket服务将数据包发送出去.4.关闭 ...
- Git详解之二 Git基础
Git 基础 读完本章你就能上手使用 Git 了.本章将介绍几个最基本的,也是最常用的 Git 命令,以后绝大多数时间里用到的也就是这几个命令.读完本章,你就能初始化一个新的代码仓库,做一些适当配置: ...
- 2.4 Git 基础 - 撤消操作
2.4 Git 基础 - 撤消操作 撤消操作 任何时候,你都有可能需要撤消刚才所做的某些操作.接下来,我们会介绍一些基本的撤消操作相关的命令.请注意,有些撤销操作是不可逆的,所以请务必谨慎小心,一旦失 ...
- Git详解之二:Git基础
Git 基础 读完本章你就能上手使用 Git 了(伯乐在线注:如果你对Git还不了解,建议从本Git系列第一篇文章开始阅读).本章将介绍几个最基本的,也是最常用的 Git 命令,以后绝大多数时间里用到 ...
- Git基础 —— Github 的使用
Git 基础学习系列 Git 基础 -- 安装 配置 别名 对象 Git 基础 -- 常用命令 Git 基础 -- 常见使用场景 Git基础 -- Github 的使用 Github 的利用 Gith ...
随机推荐
- haproxy + lvs异同(优点-缺点)
LVS和HAProxy相比,它的异同是什么? 1. 两者都是如软件负载均衡.但lVS是基于linux操作系统实现的一种软负载均衡,Haproxy是根据第三 方应用实现的软负载均衡. 2. LVS是 ...
- IE8 下处理select标签高度不居中
IE8: Chrome: 同样的代码可是在IE8下select的文字并不是垂直居中. 处理:给select的样式添加padding上下的内边距. 加line-height一点用都 ...
- #leetcode刷题之路44-通配符匹配
给定一个字符串 (s) 和一个字符模式 (p) ,实现一个支持 '?' 和 '*' 的通配符匹配.'?' 可以匹配任何单个字符.'*' 可以匹配任意字符串(包括空字符串).两个字符串完全匹配才算匹配成 ...
- 关于JQ中ready()方法的几种写法总结
——习惯贵在坚持,天才在于积累. 好久没写博客的我,似乎是忘记了当初写博客的初衷是要在博客笔记中提升自己的写作能力和积累自己的知识要点. 废话不多说. ready()方法作用: 在页面加载完成后,立即 ...
- VB6 red write DB using Microsoft DAO 3.6 Object Library
' -----------------------------read db Private Sub Form_Load() 'MsgBox App.Path & "\wgscd.m ...
- 补交20145226蓝墨云班课 -- Arrays和String单元测试
蓝墨云班课 -- Arrays和String单元测试 具体描述: 在IDEA中以TDD的方式对String类和Arrays类进行学习 测试相关方法的正常,错误和边界情况 String类 charAt ...
- Android内核编译
说明: 我这里用的是Android 4.2.2自带的交叉编译工具.如果是使用host系统安装的,我觉得应该也是可以的.但是没有测试过.因为Android源代码已经自带了,所以大多数情况下,不需要再安装 ...
- Jquery 实现select 3级级联查询
实现级联效果的思路: 1. 页面加载时,先显示第一级select,第二.三级的select隐藏,根据第一级select值的改变,再显示第二级select,依次类推: 2.只从后台获取第一级select ...
- 4820: [Sdoi2017]硬币游戏
4820: [Sdoi2017]硬币游戏 链接 分析: 期望dp+高斯消元. 首先可以建出AC自动机,Xi表示经过节点i的期望次数,然后高斯消元,这样点的个数太多,复杂度太大.但是AC自动机上末尾节点 ...
- 使用最新版的Adobe Photoshop CC 2017
1. 装之前建议把之前老的Photoshop删干静.打开官网 https://www.adobe.com/cn/products/photoshop.html 点免费使用 ,会下载一个安装器Crea ...