Git使用与心得体会
Git使用与心得体会
一.闲聊
闲暇时间学一下Git,也算是不用在网页端操作github了
二.Git相关
集中式与分布式
Git是一个分布式的版本控制系统,而传统的SVN则属于集中式

集中式与分布式的区别:
集中式版本控制中心只有中心服务器有一份代码,而分布式则是每个人的电脑上都有一份完整的代码
集中式版本控制中心存在显而易见的安全性问题,当中心服务器挂掉后,所有人都无法正常工作了
集中式版本控制需要联网才能工作,因为你需要和中心服务器进行交互,如果你的网络状况不佳,那么使用体验会令用户无法忍受,而分布式管理控制则无需联网即可进行
分布式版本控制新建、合并分支的操作速度十分迅速,而集中式版本控制新建一个分支就相当于复制了一份完整的代码
中心服务器
中心服务器可以用来交换每个用户的修改,虽然实际上没有中心服务器我们也可以工作,但中心服务器能够保证24小时持续开机,更加方便用户的交换修改。
Github、Gitee就是中心服务器
工作流
当我们执行mkdir之后,我们所新建的directory就成为了一个工作区,工作区的目录内还有一个隐藏目录.git,它存储的是git的版本库。

- git add 把文件修改添加到缓存区
- git commit 把缓存区的修改提交到当前分支,提交后缓存区就会被清空
- git reset -- 使用当前分支上的修改覆盖缓存区,工作流是由History到Stage的,即我们撤销了最新一次的git add操作
- git checkout -- 将缓存区的修改覆盖工作区,即我们撤销了最新一次的本地修改

我们也可以跳过暂存区域直接从分支中取出修改,或者直接提交修改到分支中。
- git commit -a 直接把所有文件的修改添加到暂存区然后执行提交
- git checkout HEAD -- files 取出最后一次修改,可以用来进行回滚操作


分支实现
Git使用指针将每个提交连接成一条时间线,而Head指针则指向当前分支

新建分支时,我们新建一个指针指向时间线的最后一个节点,并让Head指向新的分支

我们的每次提交只会让当前分支指针向前移动,而其他分支指针则不会移动

合并分支通过改变指针即可

冲突
当两个分支都对同一个文件的同一行进行了修改,在分支合并时就会产生冲突
Git 会使用 <<<<<<< ,======= ,>>>>>>> 标记出不同分支的内容,只需要把不同分支中冲突部分修改成一样就能解决冲突。
<<<<<<< HEAD
Creating a new branch is quick & simple.
=======
Creating a new branch is quick AND simple.
>>>>>>> feature1
Fast forward
快进式合并,会直接将master分支指向合并的分支,但这样会导致丢失分支信息
我们可以在执行git merge操作时加上--no-ff参数来禁用此模式,并加上一个-m让合并时产生一个新的commit
$ git merge --no-ff -m "merge with no-ff" dev

储藏(Stashing)
在一个分支上操作之后,如果我们还没有提交,那么我们切换分支,在另一个分支上也能看到新的修改。原因是因为所有分支共用一个工作区。
但我们可以使用git stash命令将当前分支的修改储藏起来,此时工作区的所有修改会被存入到栈中,也就是说工作区处于一个没有任何未提交修改的状态。这时就可以切换到别分支了。
$ git stash
Saved working directory and index state \ "WIP on master: 049d078 added the index file"
HEAD is now at 049d078 added the index file (To restore them type "git stash apply")
该功能可以用于 bug 分支的实现。如果当前正在 dev 分支上进行开发,但是此时 master 上有个 bug 需要修复,但是 dev 分支上的开发还未完成,不想立即提交。在新建 bug 分支并切换到 bug 分支之前就需要使用 git stash 将 dev 分支的未提交修改储藏起来。
个人感觉有点像Win的睡眠和休眠?
SSH传输设置
Git 仓库和 Github 中心仓库之间的传输是通过 SSH 加密的。
如何配置Github的SSH密钥网上很多,不赘述了。
.gitignore文件
忽略以下文件:
- 操作系统自动生成的文件,比如缩略图;
- 编译生成的中间文件,比如 Java 编译产生的 .class 文件;
- 自己的敏感信息,比如存放口令的配置文件。
Git基本操作

三.Tips
Git中可以使用gitk这个命令来打开图形化的管理界面,虽然现在很多IDE集成了强大的Git功能或者专门有Git软件就是了……
Git使用与心得体会的更多相关文章
- Git的基本使用方法和安装&心得体会
1. git的安装和github的注册.代码托管.创建organization.邀请member. (1)git的安装 因为我电脑是windows系统,所以下载的是git for windows.在官 ...
- 关于Solr的使用总结的心得体会
摘要:在项目中使用Solr作为搜索引擎对大数据量创建索引,提供服务,本文是作者对Solr的使用总结的一点心得体会, 具体包括使用DataImportHandler从数据库中近实时同步数据.测试Solr ...
- 加快FineReport报表设计的几个心得体会
加快FineReport报表设计的几个心得体会 一.从远程服务器大批量取数进行表样设计时,最好按“列顺序”取一个“空的SQL语句”,这样可提高设计速度.否则每次设计时模板均要从远程读取数据,速度相当慢 ...
- 十天来学习java的心得体会
有关学习java是几天来的心得体会: 十天学习java遇到很多问题,每个问题都是经过反复的看书本以及上网查找资料来解决的,发现这一点真的需要自己来而不是去遇到什么问题就去依靠他人(师兄.同学).在其中 ...
- "琳琅满屋"调查问卷 心得体会及结果分析
·关于心得体会 当时小组提出这个校园二手交易市场的时候,就确定了对象范围,仅仅是面向在校大学生,而且在我们之前就已经有了很多成功的商品交易的例子可以让我们去借鉴,再加上我们或多或少的有过网 ...
- 关于多本小说站的SEO—从”易读中文网”获得的心得体会
从目前国内的网站流量来说,电影站,小说站,游戏站等的流量占总流量的比例还是很高的,许多站长把目光投入到了这几个方面,本文就着重来说对于小说站,尤其是多本小说站的SEO心得体会! 对于小说站来说,只要排 ...
- AngularJS心得体会
AngularJS早些时候有过了解,知道这是一个JS的MVC框架,同类型的框架还有Backbone等.这次是由于项目需要,学习了两天的Angular后开始着手改之前的项目代码,这里大概说一下这一周学习 ...
- 关于Dropdownlist使用的心得体会
2013-07-23关于Dropdownlist使用的心得体会: Dropdownlist使用最多的几个属性: 一.Dropdownlist.Items,负责包含所有选项的容器 DropDownLis ...
- xp硬盘安装Fedora14 过程记录及心得体会(fedora14 live版本680M 和fedora14 DVD版本3.2G的选择)
这次电脑奔溃了,奇怪的是直接ghost覆盖c盘竟然不中.之前电脑上硬盘安装的fedora14操作系统,也是双系统.不知道是不是这个问题,记得同学说过,在硬盘装fedora之后,要手动修改c盘隐藏的那个 ...
随机推荐
- 第十天python3 函数的销毁
全局函数销毁 三种方式: 1.重新定义同名函数 2.del语句删除函数对象 3.程序结束时 局部函数销毁 三种方式: 1.重新在上级作用域定义同名函数: 2.del语句删除函数对象: 3.上级作用域销 ...
- 事务_基本演示和事务_默认自动提交&手动提交
事务的基本介绍 概念: 如果一个包含多个步骤的业务操作,被事务管理,那么这些操作要么同时成功,要么同时失败 操作: 开启事务:start transaction; 回滚:rollback; 提交:co ...
- python jinjia2 高级
高层api class jinja2.Environment([options]) Enviroment:环境,是Jinjia2的核心组件,它包含重要的共享变量,如配置.过滤器.测试.全局变量.模板加 ...
- npm、cnpm与package-lock.json的操作
来源:npm.cnpm与package-lock.json的操作_IT码农-爱吃辣条的博客-CSDN博客_cnpm lock package.json文件只能锁定大版本,也就是版本号的第一位,并不能锁 ...
- [NCTF2019]SQLi-1||SQL注入
1.打开之后首先尝试万能密码登录和部分关键词(or.select.=.or.table.#.-等等)登录,显示被检测到了攻击行为并进行了拦截,结果如下: 2.使用dirmap进行目录扫描,发现robo ...
- Java核心知识体系3:异常机制详解
1 什么是异常 异常是指程序在运行过程中发生的,由于外部问题导致的运行异常事件,如:文件找不到.网络连接失败.空指针.非法参数等. 异常是一个事件,它发生在程序运行期间,且中断程序的运行. Java ...
- LuoguP4782 【模板】2-SAT 问题 (2-SAT)
Not difficult, the only problem is how to deal with give 0/1 to the var. Tarjan offers the reverse t ...
- 通俗理解ABP中的模块Module
网上有不少文章说ABP的模块,有的直接翻译自官网介绍,有的分析Modlue的源代码,有的写一通代码,没什么注释,很少有能通俗说清的.那么,有两个问题:1.ABP中的模块到底是什么?2.搞这个东西是干嘛 ...
- vue项目打包后使用reverse-sourcemap反编译到源码(详解版)
首先得说一下,vue项目中productionSourceMap这个属性.该属性对应的值为true|false. 当productionSourceMap: true,时: 1.打包后能看到xxx ...
- Java SE 18 新增特性
Java SE 18 新增特性 作者:Grey 原文地址:Java SE 18 新增特性 源码 源仓库: Github:java_new_features 镜像仓库: GitCode:java_new ...