当前位置: 首页 > news >正文

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查看

转载于:https://www.cnblogs.com/songxh-scse/p/5630655.html

相关文章:

  • JavaScript最常用的55个经典技巧
  • 大数据查询引擎 PrestoDB
  • Windows Server 2008 计划任务配置(任务计划程序)每分钟执行BAT
  • SAX(三个实例)
  • [数据库]redis与redis操作
  • XMLHttpRequest Ajax 实例简介
  • Android开发之数据存储——SharedPreferences基础知识详解,饿补学会基本知识,开发者必会它的用法。...
  • xml的SAX解析过程详解
  • xml文件操作(利用dom4j)
  • aspx页面导出为word
  • mysql优化之索引优化
  • 使用SAX解析XML
  • AJAX实现类Google Suggest效果
  • Android:百度地图 + 百度导航
  • 文章太长了!~关于 XML 的一些基础知识
  • 《深入 React 技术栈》
  • centos安装java运行环境jdk+tomcat
  • Consul Config 使用Git做版本控制的实现
  • DOM的那些事
  • ES6系列(二)变量的解构赋值
  • Node + FFmpeg 实现Canvas动画导出视频
  • rabbitmq延迟消息示例
  • Work@Alibaba 阿里巴巴的企业应用构建之路
  • 前端面试题总结
  • 前言-如何学习区块链
  • 数组的操作
  • 我是如何设计 Upload 上传组件的
  • 云栖大讲堂Java基础入门(三)- 阿里巴巴Java开发手册介绍
  • Hibernate主键生成策略及选择
  • ​【C语言】长篇详解,字符系列篇3-----strstr,strtok,strerror字符串函数的使用【图文详解​】
  • ​软考-高级-信息系统项目管理师教程 第四版【第23章-组织通用管理-思维导图】​
  • ​香农与信息论三大定律
  • #{}和${}的区别是什么 -- java面试
  • #LLM入门|Prompt#2.3_对查询任务进行分类|意图分析_Classification
  • $.ajax中的eval及dataType
  • (ZT)一个美国文科博士的YardLife
  • (附源码)springboot社区居家养老互助服务管理平台 毕业设计 062027
  • (附源码)基于ssm的模具配件账单管理系统 毕业设计 081848
  • (七)理解angular中的module和injector,即依赖注入
  • (学习日记)2024.02.29:UCOSIII第二节
  • **PHP分步表单提交思路(分页表单提交)
  • .Net Attribute详解(上)-Attribute本质以及一个简单示例
  • .NET Micro Framework 4.2 beta 源码探析
  • .NET 使用 XPath 来读写 XML 文件
  • .Net+SQL Server企业应用性能优化笔记4——精确查找瓶颈
  • .NET开源快速、强大、免费的电子表格组件
  • .NET设计模式(7):创建型模式专题总结(Creational Pattern)
  • .net使用excel的cells对象没有value方法——学习.net的Excel工作表问题
  • .NET运行机制
  • .net中生成excel后调整宽度
  • @Builder用法
  • @德人合科技——天锐绿盾 | 图纸加密软件有哪些功能呢?
  • [Android]一个简单使用Handler做Timer的例子
  • [BUG]vscode插件live server无法自动打开浏览器
  • [C#C++]类CLASS