git知识整理
概述
工作中使用git进行代码托管,一开始只知道git add commit,之后了解了git-flow插件,觉得超牛逼,一键生成feature分支,再后来听说原生git命令更好用,于是又去学了原生git命令。
看了下git官方文档,记录下学习的心得。
基本介绍
git分为未跟踪区,跟踪区和暂存区。
文件一般都存放在未跟踪区,修改后的文件也存放在未跟踪区。
我们熟知的git add命令会把修改提交到跟踪区。值得一提的是,我们一般使用git add .来提交所有改动,也可以使用git add path/to/file来提交某个文件的改动,还可以用正则来提交某个文件夹里面的所有文件的改动。
接下来是git commit命令,它会把跟踪区的文件放进暂存区里面。值得一提的是,可以利用git commit -amend来合并这次和上次的提交。
最后是git push origin branch命令,它会把暂存区的文件上传到远程仓库,并且把本地的这些文件重新放进未跟踪区。
查看指令
有几个查看指令是经常用到的。
git status。用来查看当前git分支的状态。这个经常用到。
git diff --cached。用来查看暂存区的文件和远程服务器的文件有什么不同。
git log。用来查看提交历史。
需要注意的是,输入上面某些命令后不能输入命令行了,这时需要点击q来重新回到命令行。
分支
git在分支管理上面非常智能和高效。它并没有把所有分支复制在本地,而是使用指针来进行分支切换。
比如说,我们在master主分支上创建一个develop分支,那么git不会傻傻的重新复制一份master分支的内容,而是创建一个叫develop的指针指向master指针指向的分支,然后把当前项目的指针head指针指向develop。所以新建分支操作只是新建指针并调整指针的指向而已。
再比如说,我们再本地对master进行开发,提交了开发内容,并且push到了远程服务器。这个时候也没有发生复杂耗时的文件复制过程,仅仅只是把master指针指向了当前修改的分支而已。所以,修改和提交操作也只是调整指针的指向而已。
这就是git很快的原因。
通过上面的例子我们可以看到:
git checkout -b branch命令能超级迅速的创建并切换新分支。并且,git checkout branch命令能超级迅速的切换新分支,同时切换本地内容。
git branch -a 能够查看本地和远程的所有分支。并且,git branch能够查看本地的所有分支。
值得一提的是,如果我们由于各种各样的原因,不小心在develop或者master分支上做了改动,我们怎么撤销呢?使用git stash命令暂存所有改动即可;然后用git stash list查看暂存的stash清单;利用git stash apply使用某个stash;如果不需要还可以用git stash drop命令删掉暂存的所有stash。
git flow
业界有一套规范的git开发工作流规范。
- master分支。稳定分支,所有经过测试后的分支才能merge进master分支。所有的tag也都在master分支上进行。
- develop分支。开发分支,所有的开发工作需要先测试ok后合并到develop分支。
- feature分支。特性分支,为了开发新特性而从develop分支拉下来的一个分支。开发完成后合并到develop分支。
- release分支。提测分支,专门进行提测的分支,测试完毕后该分支会合并到develop或者master分支。
需要注意的是,对于小项目,有时候没有release分支,直接在feature分支上面提测。另外,feature分支是一个文件夹形式的,里面有很多各种特性的分支,比如feature/href分支等等。
冲突
- git fetch会拉取远程服务器上的数据到本地,但不会覆盖。
- git merge会在文档里面显示出所有的冲突,以供解决。解决完成后只需要正常的git add和git commit即可。
- git pull会同时执行git fetch 和 git merge,并且覆盖掉远程服务器的数据。
值得注意的是,git merge之后非常方便修改冲突,只需要删掉不要的代码即可。删掉不要代码之后的最终代码回覆盖掉远程服务器上的代码。
变基
git rebase待续。
git知识整理的更多相关文章
- 工具篇之GIT知识整理(一)
目录 项目工具篇(一)GIT 说在前面 背景 与其他版本控制产品对比 Git下载地址及安装 下载地址 安装 在案例中简单使用Git命令 git clone git log git diff git c ...
- Git知识总览(四) git分支管理之rebase 以及 cherry-pick相关操作
上篇博客聊了<Git知识总览(三) 分支的创建.删除.切换.合并以及冲突解决>,本篇博客我们主要来看一下 rebase 变基相关的操作.rebase 操作和 merge 操作最终都可以达到 ...
- Salesforce知识整理(一)之Lightning Web Component Tools
目录 LWC知识整理(一) 工具 Salesforce CLI Visual Studio Code(VS Code) Developer Hub(Dev Hub) 开启Dev Hub 相关资料 茶余 ...
- Git知识总结
Git知识总结 Git安装 windows 在git官网中下载安装程序,然后按默认选项安装即可 安装完成后,在开始菜单里找到"Git"->"Git Bash&quo ...
- js事件(Event)知识整理
事件(Event)知识整理,本文由网上资料整理而来,需要的朋友可以参考下 鼠标事件 鼠标移动到目标元素上的那一刻,首先触发mouseover 之后如果光标继续在元素上移动,则不断触发mousemo ...
- Kali Linux渗透基础知识整理(四):维持访问
Kali Linux渗透基础知识整理系列文章回顾 维持访问 在获得了目标系统的访问权之后,攻击者需要进一步维持这一访问权限.使用木马程序.后门程序和rootkit来达到这一目的.维持访问是一种艺术形式 ...
- Kali Linux渗透基础知识整理(二)漏洞扫描
Kali Linux渗透基础知识整理系列文章回顾 漏洞扫描 网络流量 Nmap Hping3 Nessus whatweb DirBuster joomscan WPScan 网络流量 网络流量就是网 ...
- wifi基础知识整理
转自 :http://blog.chinaunix.net/uid-9525959-id-3326047.html WIFI基本知识整理 这里对wifi的802.11协议中比较常见的知识做一个基本的总 ...
- 【android Studio】零git知识、零脚本命令,即刻体验git版本管理魅力!
git的优点就不去多说了.阻碍咱新手体验它的唯一问题就是门槛太高,脚本看着像天书, 本文主要阐述的,就是如何在android studio上,也能像tfs那样,非常简单的操作,就能使用git进行版本管 ...
随机推荐
- vue-cli 2.x脚手架build目录中的webpack.base.conf.js配置文件
此文章用来解释vue-cli脚手架build目录中的webpack.base.conf.js配置文件,适用于vue-cli 2.x版本 此配置文件是vue开发环境的wepack相关配置文件,主要用来处 ...
- Quartz.Net进阶之五:TriggerListener 、JobListener 和 SchedulerListener
一.介绍 今天开始学习监听器,就是 Listener,在Quartz.Net 中,主要包含3类的监听器,主要内容包括:TriggerListener .JobListener 和 SchedulerL ...
- Asp.net core 向Consul 注册服务
Consul服务发现的使用方法:1. 在每台电脑上都以Client Mode的方式运行一个Consul代理, 这个代理只负责与Consul Cluster高效地交换最新注册信息(不参与Leader的选 ...
- vue 增删改查
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- Ax用Excel导出表的字段属性信息
static void CKT_ExportTableColnum(Args _args){ LJD_QaHalf_Figure _LJD_QaHalf_Figure; SysDictTable sd ...
- 为nginx创建windows服务自启动
1.下载最新版的 Windows Service Wrapper 程序,比如我下载的名称是 "winsw-1.9-bin.exe",然后,把它命名成你想要的名字(比如: " ...
- python requests与aiohttp 速度对比
环境:centos7 python3.6 测试网址:www.bai.com 测试方式:抓取百度100次 结果: aio: 10.702147483825684srequests: 12.4046785 ...
- Spring-MVC运行原理
一. Spring-MVC的对象初始化,即 bean放入context的beanFactory中. 1. 对象的初始化工作主要在org.springframework.web.servlet.Fram ...
- Navicat Premium 出现2059错误解决办法
1,登陆后可查询默认加密规则,键入 use mysql; select user,plugin from user where user ='root'; 解决办法: 1,更新用户密码:ALTER U ...
- Windows上Kafka运行环境安装
1. 安装JDK 1.1 安装文件:http://www.oracle.com/technetwork/java/javase/downloads/index.html 下载JDK1.2 安装完成后需 ...