当前位置: 首页 > 编程日记 > 正文

git用户文档1 — git基础

1. git基础

1.1 分布式

  1. 我们把远端仓库(云端的仓库)称为repo,repo必须有一个master分支,就是主分支。
  2. repo除了有一个master分支,还有很多其他的分支,若干个分支之间存储的数据一版都是不一样的
  3. 本地可以git clone下来repo的master分支,也可以git clone下来repo的其他的分支,因为repo各个分支数据不一样,本地clone下来的数据对应的也不一样
  4. 从以上三点,我们可以理解一个问题,其实repo也可以理解成一个用户管理的一个仓库,只不过这个仓库是一个公共的仓库
  5. 本地仓库管理的时候,一般开发一个功能的时候,会创建一个分支,开发完成之后,可以先提交到本地,并做记录(git add,git commit)。我们可以选择把本地的分支上传到远程的一个分支

1.2 git配置

Linux用户首先需要安装git,centos用户一般使用yum install方式进行安装
git的配置分为两个层面,一个是配置全局的,这个配置供全部的本地仓库使用,一个是针对某一个特定的仓库所做的配置,后者的配置会覆盖前者的配置
git的配置的两种方式:通过编写配置文件和通过git config指令(git config –help查看配置帮助)

1.2.1 配置用户

如果配置好了之后,输入git log指令,我们可以看到用户,邮箱等相关信息
配置用户信息

$ git config --global user.name "Your Name"
$ git config --global user.email "Your Email"

例如

$ git config --global user.name "Neil"
$ git config --global user.email "neilzhy@163.com"

上面的指令中 –global表示配置的一个全局的选项,意思就是,这个配置对该用户的所有本地仓库都是有效的
全局的配置信息会被git保存在本地的~/.gitconfig文件中

1.2.2 配置颜色

配置git颜色之后,比如在查看本地diff的时候,会显示不同的颜色,或者查看本地branch(分支)的时候,所在的分支会高亮显示
使用下面指令进行颜色配置,下面的颜色配置基本可以满足大多数用户的需求,如果想要更多的配置,可以自行查阅

$ git config --global color.ui true

git基本命令

1.3.1 git clone

用于从克隆一个远程仓库,clone完成后,本地仓库就有了远程仓库的完整副本

1.3.2 git init

除非是新建项目,基本不使用这个指令,该指令用于初始化一个git仓库,主要是生成了git仓库的一些配置文件

1.3.3 git add/rm

将本地的修改添加到staged状态,可以这样子理解本地仓库里面有很多数据,每次修改数据之后,首先要使用git add/rm将修改的数据添加到一个等待记录区里面,等待记录区里面的数据,要经过git commit -m记录之后,才能够进入到本地仓库

1.3.4 git status

展示本地仓库的一个状态,此时会列出已经修改但是没有提交到等待记录区的文件,不属于仓库的新增的文件,还有已经存在等待记录区的文件

1.3.5 git commit

将等待记录区的文件,记录一下,保存在本地仓库,这一步的目的实际上是给每个修改做一个标记,方便快速的查找

1.3.6 git reset

一般用于修改本地git的历史文件,一般有下面几种情况
- git reset –hard ,直接抛弃新的commit和他的修改,将指针指向,慎用
- git reset –soft ,直接抛弃新的commit,但是将修改的内容,放入到了等待记录区,一般用于修改最后提交的commit
- git reset,将等待记录区所有内容全部移除,但是本地修改的文件没有改动
实例1:本地最后一个commit是做测试用的,现在已经不需要了,可以直接删除最后一个commit

git reset --hard HEAD~1

实例2:希望将本地的最后两个commit合并成一个,可以先将最后一次的放入到等待记录区,然后一起提交

git reset --soft HEAD~1 // 移除最后一个 commit,并且将修改放入 staged 区
git commit --amend --no-edit // 修改最后一个 commit(因为上一个已经删除最后一个 commit 了),并且添加 staged 中的内容
1.3.7 git branch

多人参与项目的时候,有各种分支,git branch就是用来处理分支的
git branch展示当前本地的所有分支,且高亮当前分支
git branch -a展示所有的本地分支和远程分支
git branch -m重命名分支
git branch -D删除分支

1.3.8 git checkout

一般使用git clone克隆代码之后,开发的时候一般在分支上面开发
git checkout 分支名,切换分支
git checkout -b 新的分支名,新建分支

1.3.9 git remote

使用git clone之后,本地的项目就是remote(远程),这个远程是相对于云端代码库来讲的。我们把本地的这个remote叫做origin,这就可以理解git push origin master的含义了吧,就是把本地的origin远程,推送到云端的master。我们还可以写git push origin hahah,这个hahah是云端的分支名

查看本地的remote使用

git remote
git remote -v
1.3.10 git pull/fecth/push

pull是将云端的remote和本地的分支进行merge
fetch是拉去云端的remote,但是不会和本地分支merge,而是拉去到了FETCH_HEAD
push将本地的推送到云端

1.3.11 git rebase/merge

当前用户的分支是,需要将A推送rebase到B分支上面,执行

git rebase B

rebase首先会找到A和B的共同祖先的commit,然后把A分支上面的所有修改一点点加到B上面,如果有冲突则需要解决冲突,如果没有就rebase成功了

这里的B一般代表的公共开发的分支,比如一个任务,交给了几个同学共同开发,此时会先建一个分支B,然后大家往B上面推送代码,一旦B有更新,就需要将本地A的分支,rebase到B上面

rebase之后,B最后进行commit,这样子非常清晰

但是merge不一样,merge会按照时间顺序合并两个分支,会导致合并后的内容比较混乱,一般使用rebase而不适用merge

相关文章:

MySQL5.7的date类型_Mysql5.7 虚拟列数据类型为DATE时,如何存入数据?

表结构:v_date为虚拟列CREATE TABLE test ( json TEXT NULL, date DATETIME NULL DEFAULT NULL, v_date DATE AS (json_extract(json,$.date)) VIRTUAL)COMMENT测试表\r\nCOLLATEutf8mb4_general_ciENGINEInnoDB;插入:INSERT INTO test (json) …

找出字符串中所有数字

刚才网友在SKYPE问Insus.NET一个问题,在MS SQL中,怎样找出一个字符串所有数字。 Insus.NET使用较简单与平常的方法,就是使用循环的方法,循环字符串中每一个字符,并插入至一个表变量中。然后再SELECT这个表变量&#xf…

Safair 浏览器cllick事件不生效或者需要双击才生效

针对Safair 浏览器cllick事件不生效或者需要双击才生效的解决方案。 方法一:给元素加上cursor: pointer样式。(不生效) 方法二:ios事件机制不一样,将click事件改为mousedown或其他事件即可解决。(需要双击&…

springboot mysql行锁_SpringBoot基于数据库实现简单的分布式锁

本文介绍SpringBoot基于数据库实现简单的分布式锁。1.简介分布式锁的方式有很多种,通常方案有:基于mysql数据库基于redis基于ZooKeeper网上的实现方式有很多,本文主要介绍的是如果使用mysql实现简单的分布式锁,加锁流程如下图&…

简单shell

执行脚本结果重定向 sh hah.sh hello 1>>/home/qiso/job.log 2>&1 上面这句话的意思是 首先通过sh执行脚本hah.sh,其中执行这个脚本的时候,需要传入参数,参数是hello, 1表示的是标准输出,以上脚本执行…

个人随笔、收藏——(包括技术、设计思想等)

1、开源自动化工具 Sahi、Selenium、AutoIt Sahi,是一个用于Web应用程序的自动测试工具。Sahi运行为一个代理服务器,必须把浏览器的代理设置为Sahi服务器。 然后Sahi注入javascript来访问Web页面中的元素。Sahi支持Http与Https并且独立于Web站点或Web应用…

安装QCreator2.5+Qt4.8.2+MinGW_gcc_4.4

QCreator最近升级了。正好想试试新功能,所以把原来安装的QCreator2.3.1Qt4.7.1卸载了。安装新的版本。具体步骤如下: 1# 下载QCreator2.5version。 2# 下载Qt4.8.2version。 3# 根据Qt官网给的链接,下载MinGW-gcc440_1(因为从QCre…

第一次结对作业

211606368林书浩 211606352陈彬 一、预估与实际 PSP2.1Personal Software Process Stages预估耗时(分钟)实际耗时(分钟)Planning计划• Estimate• 估计这个任务需要多少时间3540Development开发• Analysis• 需求分析 (包括学习…

mysql如何根据业务分表设计_mysql分表分库的应用场景和设计方式

很多朋友在论坛和留言区域问mysql在什么情况下才需要进行分库分表,以及采用何种设计方式才是最优的选择,根据这些问题,小编为大家整理了关于MySQL分库分表的应用场景和最优的设计方式举例。一. 分表场景:对于大型的互联网应用来说…

简单protobuf

protobuf的数据类型,有最简单的那种数据类型,就是一个文件中,定义了一个message 可以在一个文件中定义两个message,两个message之间是没有关联的可以在一个文件中,定义两个message,其中一个是简单的&#x…

迭代器、生成器

迭代器 lst range(10) #生成一个枚举列表 从0-9 itr iter(lst) #生成一个迭代器 itr.next() #访问迭代器方法 遍历迭代器 try:while True:val itr.next()print val except StopIteration:pass 注意: 1、如果对list dict tuple 用for遍历,则for内部自动…

Linq 无法删除尚未附加的实体的问题

Linq删除个集合数据, 刚开始用的注释掉的那行, 会提示"无法删除尚未附加的实体"错误, 使用Attach方法依然不行. 想想以前用过DeleteAllOnSubmit没啥问题哈, 估计是_db对象的引用问题, 换了种写法就OK了. //删掉所有工作组部门关联 //wgdrLst Wor…

从云端到边缘 AI推动FPGA应用拓展

近日,全球最大的FPGA厂商赛灵思宣布收购深鉴科技的消息,引发人工智能芯片行业热议,这也是首起中国AI芯片公司被收购的案例。值得注意的是,收购深鉴科技的赛灵思在2018年下半年重点发展方面是汽车自动驾驶。 FPGA市场的竞争正在发生…

mysql中的%_mysql入门

MySQL数据库1 数据库概念(了解)1.1 什么是数据库数据库就是用来存储和管理数据的仓库!数据库存储数据的优先:可存储大量数据;方便检索;保持数据的一致性、完整性;安全,可共享;通过组合分析&am…

关于timewait状态

四次挥手 主动关闭连接的一方,调用close,协议层发送FIN包,在TCP报头的FIN字段设置为1,意思是我要和你断开链接,主动关闭连接的一方进入到了FIN_WATI_1状态 被动关闭的一方收到了FIN包之后,协议层回复ACK包…

DWZ基于ajax重复请求的修复

在同一个通用上传插件,每次都需要客户端去请求服务器,返回的html页面,如果请求的间隔很短的话,ajax会认为是重复作废的请求,这个时候需要修改一下源码来达到在短时间内重复请求也能得到响应找到js/dwz.ajax.js修改源码为function ajaxTodo(url, callback){t Date.parse(new D…

TLS/HTTPS 证书生成与验证

https://www.cnblogs.com/kyrios/p/tls-and-certificates.html 最近在研究基于ssl的传输加密,涉及到了key和证书相关的话题,走了不少弯路,现在总结一下做个备忘 科普:TLS、SSL、HTTPS以及证书 不少人可能听过其中的超过3个名词&am…

高并发系统搭建:web负载均衡

高并发系统搭建:web负载均衡 所谓的负载均衡就是让多个请求尽量均衡的分配到不同的机器上面去 1. HTTP负载均衡 当用户的请求发来之后,web服务器通过修改HTTP响应报头中的Location标记,返回一个新的url,然后浏览器继续请求这个…

centos 7.0 安装mysql_CentOS 7.0yum安装MySQL

1.下载mysql的repo源$ wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm2.安装mysql-community-release-el7-5.noarch.rpm包$ sudo rpm -ivh mysql-community-release-el7-5.noarch.rpm安装这个包后,会获得两个mysql的yum repo源:/…

UVa 11174 - Stand in a Line

http://uva.onlinejudge.org/index.php?optioncom_onlinejudge&Itemid8&pageshow_problem&problem2115 数学的特点在于不断的推导,此题还需要用到 欧拉定理和逆元的相关性质,推荐博客(有部分小错误):http…

计算背板带宽方法

背板带宽:端口数*端口速率*2包转发率:接口带宽(bps)/8bit/(64812)千兆包转发率:1.488Mpps百兆:0.1488Mpps万兆:14.88Mpps例如2950G-48背板2*1000*248*100*213600Mbps13.6Gbps相当于13.6/26.8个千…

Windows下安装PHP开发环境

一、Apache 因为Apache官网只提供源代码,如果要使用必须得自己编译,这里我选择第三方安装包Apache Lounge。 进入Apachelounge官方下载地址:http://www.apachelounge.com/download/首先下载并安装vc redist,这是Apache运行必需的一…

高并发简单设计

系统内存不足,主要是每次来一个请求的时候,就要创建倒排的哈希,这个时候如果高并发的情况下,就会出现问题,每次一个倒排索引占据内存,内存只有2G肯定是不够使用的 可以根据日志分析的结果,看看…

mysql 8.0数据备份恢复_第7章 备份和恢复

## 目录- 备份和恢复类型- 数据库备份方法- 例备份和恢复策略- 使用mysqldump进行备份- 使用二进制日志进行- 点时间(增量)恢复- MyISAM表维护和崩溃恢复备份数据库非常重要,这样您就可以恢复数据,并在发生问题时再次启动并运行,例如系统崩溃…

CSS 实例之打开大门

本个实例主要的效果如下图所示 本案例主要运用到了3D旋转和定位技术。具体步骤如下&#xff1a; 1、首先在页面主体加三个很简单的div标签&#xff1a; <div class"door"><div class"door-l"></div><div class"door-r">…

为 Asp.net 网站新增发送手机短信功能

本文旨在帮助那些为网站发送手机短信正在寻求解决方案还未最终找到解决方案的朋友提供参考。 适合人群 须满足一下条件之一&#xff0c;如果以下3个条件您都不满足&#xff0c;为节约您宝贵的时间&#xff0c;请终止阅读本篇文章。 条件如下&#xff1a; 1.一条短信内容进行短信…

搜索引擎Killed原因排查

问题描述 腾讯云单核2G内存&#xff0c;运行程序的时候&#xff0c;程序有时会挂掉了&#xff0c;设置ulimit -c unlimited之后&#xff0c;想要core文件&#xff0c;结果程序运行的时候&#xff0c;直接提示killed&#xff0c;没有出现core文件 调研查询 killed的原因多是因…

mysql 8.0配置主从同步_MySQL8.0.19开启GTID主从同步CentOS8

前言本次搭建目标为1主2从MySQL主从同步结构。采用CentOS8作为操作系统&#xff0c;IP为[10.0.0.211,10.0.0.212,10.0.0.213]。MySQL版本为8.0.19&#xff0c;端口均采用3306。本文仅讲解主从配置&#xff0c;因此安装MySQL的方式请参考安装文档。GTID模式介绍一、GTID Replica…

IO流总结笔记三

​ 字节流&#xff1a; 抽象基类&#xff1a;InputStream&#xff0c; OutputStream。 字节流可以操作任何数据。注意&#xff1a;字符流使用的数组是字符数组。Char [] chs 字节流使用的数组是字节数组。Byte [] bt 转换流&#xff1a; 特点&#xff1a;1&#xff0c;是字节流…