git使用总结
概述
简介
Git是一种代码托管技术,很多代码托管平台也是基于Git来实现的。
Git可以帮我们做到很多的事情,比如代码的版本控制,分支管理等。
网址
git官网:https://git-scm.com/
版本控制系统【VCS】
可以完整保存项目的快照,版本控制系统可以显示出当前版本与上一个版本之间的所有改动的细节。
四个工作区域
Workspace【工作区】:存放项目代码的地方
Stage【暂存区】: 临时存放你的改动
Repository【仓库区】: 安全存放数据的位置
Remote【远程仓库】:托管代码的服务器
工作流程
1.在工作目录中添加、修改文件
2.将需要进行版本管理的文件放入暂存区域
3.将暂存区域的文件提交到git仓库
安装git
下载地址
Windows下载:https://git-scm.com/download/win
下载64位软件包
使用
右击Git Bash Here即可打开git的终端进行操作
常用命令
初始化本地仓库
用户信息配置
【配置信息存放位置:C:\Users\86150\.gitconfig】
1.设置用户名:git config --global user.name "name"
2.设置用户邮箱:git config --global user.email "name@163.com"
3.查看用户名:git config user.name
4.查看用户邮箱:git config user.email
5.查看用户所有信息:git config --list
初始化本地仓库
创建tmp目录:mkdir tmp
初始化本地仓库:git init
git init 命令会在上述目录中创建一个名为 .git 的隐藏目录,并在其中创建一个版本库【该目录为隐藏文件,查看->显示隐藏目录】
文件命令
文件状态
1.查看文件状态:git status
2.简洁查看文件状态:git status -s
untracked【未跟踪】:没有加入到git库
Unmodified【文件已经入库但未修改】
Modified【文件已修改】
Staged【暂存】
暂存区
1.加入暂存区:git add 文件名
2.取消暂存区:git reset 文件名
提交
提交:git commit -m "提交信息"
查看提交信息:git log --oneline
修改提交记录【最新一次的提交信息】:git commit --amend -m "提交信息"
删除
删除文件:git rm 文件名
【只是删除工作目录的文件,我们的版本库里面还是存在的,删除文件会把这个文件直接放入暂存区】
挽救
挽救已被删除的文件/目录:git checkout index.html
【当使用git checkout命令时,Git 会切换到指定的分支,但如果后面接的是文件名或路径,Git则不会切换分支,
而是把文件从.git目录中复制一份到当前的工作目录。更精准地说,这个命令会把暂存区中的内容或文件拿来覆盖工作目录中】
挽救所有删除的文件:git checkout .
【这个技巧不仅可以将删除的文件挽救回来,当改动某个文件后反悔了,也可以用它把文件恢复到上一次Commit的状态。
不是所有情况下都能恢复被删除的文件的。因为整个Git的记录都是放在根目录下的 .git目录中,如果这个目录被删除了,
也就意味着历史记录也被删除了,那么删除的文件也就不能恢复了】
还原【只vim修改】
git checkout -- aaa.txt # aaa.txt为文件名
还原【vim修改并git add,但没有git commit】
git log --oneline # 可以省略
git reset HEAD # 回退到当前版本
git checkout -- aaa.txt # aaa.txt为文件名
还原【vim修改并git add并git commit】
git log --oneline # 可以省略
git reset HEAD^ # 回退到上一个版本
git checkout -- aaa.txt # aaa.txt为文件名
git reset 版本号 ---- 将暂缓区回退到指定版本,根据 $ git log --oneline 显示的版本号,可以回退到任何一个版本,也可通过 HEAD 来指定版本。
HEAD 当前版本
HEAD^ 上一个版本
HEAD^^ 上上一个版本
忽略文件
简介
一般我们总会有些文件无需纳入Git的管理,也不希望它们总出现在未跟踪文件列表。
通常都是些自动生成的文件,比如日志文件,或者编译过程中创建的临时文件等。在这种情况下,
我们可以在工作目录中创建一个名为 .gitignore的文件(文件名称固定),列出要忽略的文件模式
创建.gitignore文件
touch .gitignore
编写.gitignore文件的忽略规则
vim .gitignore
忽略规则
#以斜杠“/”开头表示目录
#以星号“*”通配多个字符
#以问号“?”通配单个字符
#以方括号“[]”包含单个字符的匹配列表
#以叹号“!”表示不忽略(跟踪)匹配到的文件或目录
/public/* # 忽略public下的所有目录及文件
!/public/assets #不忽略/public/assets,就是特例的意思,assets文件不忽略
index.class # 忽略具体的文件
*.class # 忽略所有的class
[ab].class # 忽略 a.class b.class
比较差异
简单比较
diff a.info b.info
比较工作区和暂存区差异
git diff
比较暂存区差异
git diff --cached
---:标记原始文件
+++:标记新文件
@@:两个不同文件版本的上下文行号。
-: 原始文件删除改行
+:原始文件增加一行
其余命令
查看记录
git log
--graph : 查看分支合并图
--oneline : 标记把每一个提交压缩到了一行中
历史命令
git reflog
远程仓库
仓库
gitee码云
gitee官网:https://gitee.com/
是国内的一个代码托管平台,由于服务器在国内,所以相比于GitHub,码云速度会更快
github
github官网:https://github.com/
github加速:https://mirror.ghproxy.com/
是一个面向开源及私有软件项目的托管平台,因为只支持Git作为唯的版本库格式进行托管,故名GitHub
GitLab
是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的web服务
SSH协议
简介
由于Git的远程仓库不在我们本地,当我们在使用远程仓库的时候(例如克隆,拉取,推送)就会涉及到数据的网络传输,Git支持多种数据传输协议,包括:
本地协议(Local)
HTTPS协议
SSH(Secure Shell)协议
Git协议
SSH协议
SSH为Secure Shell(安全外壳协议)的缩写,由IETF的网络小组(Network Working Group)所制定
SSH是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议
利用SSH协议可以有效防止远程管理过程中的信息泄露问题
配置SSH协议
1使用命令ssh-keygen -t rsa生成公钥和私钥
ssh-keygen -t rsa
执行完成后在window本地用户.ssh目录(C:\Users\用户名.ssh)下生成如下名称的公钥和私钥
2复制公钥文件内容至服务器上
3Git的Remote要使用SSH地址
克隆
简介
Git克隆的仓库服务器的默认名:origin
Git克隆的是该Git仓库服务上的几乎所有数据,包括日志信息、历史记录等
默认配置下远程Git仓库中的每一个文件的每一个版本都将被拉取下来
命令
git clone 远程仓库地址 克隆后的文件名【自定义,可不写】
远程仓库命令
查看远程仓库:git remote
添加远程仓库:git remote add 远程仓库名 远程仓库地址
删除远程仓库:git remote rm 远程仓库名
推送:git push 远程仓库名 分支名【-f 强制推送】
拉取:git pull【从远程仓库获取最新版本到本地仓库,会自动合并】
抓取:git fetch【从远程仓库获取最新版本到本地仓库,不会自动合并】
手动合并文件:git merge 远程仓库名/分支名
分支
简介
分支像贴纸一样,可以把分支想象成一张贴纸,贴在某一个Commit上面,当做了一次新的Commit之后,这个新的Commit会指向它的前一个Commit
而接下来“当前的分支”,也就是HEAD所指的这个分支,会贴到刚刚做的那个Commit 上,同时HEAD也会跟着前进
查看分支
git branch
-r : 列出所有远程分支
-a :列出所有本地分支和远程分支
切换分支
git checkout dog
切换后,主要是更新暂存区和工作目录,变更HEAD的位置
创建分支
git branch cat
通过某分支创建分支
git checkout -b 新分支 某分支
新分支会继承某分支数据
修改分支名
git branch -m cat dog
合并分支
git merge dog
删除本地仓库分支
git branch -d dog (未合并不能删)
git branch -D dog (强制删)
删除远程仓库分支
git push 远程仓库名 -d 分支名
还原分支(删除的是还未合并的分支)支
原理:分支只是一个指向某个Commit的指标,删除这个指标并不会使那些Commit消失
1记得删除分支时的commit贴纸
Deleted branch cat(was b2323b)
2重新创建分支用原来commit贴纸,以达到还原效果
git branch new_cat b2323b
标签
简介
Git可以给历史中的某一个提交打上标签,以示重要。
比较有代表性的是人们会使用这个功能来标记发布结点(v1.0、v1.2等)。
标签指的是某个分支某个特定时间点的状态
通过标签,可以很方便的切换到标记时的状态
什么时候用标签
通常开发软件时会完成特定的“里程碑”,如软件版号1.0.0或beta-release之类的,这时就很适合使用标签做标记
标签与分支有什么区别
标签与分支的区别是,分支会随着Commit而移动,但标签不会。
之前介绍过当Git往前推,进一个Commit时,它所在的分支会跟着向前移动。
而标签一旦贴上去不管Commit怎么前进,标签都会留在原来贴的那个位置上。
因此,分支可以看成是“会移动的标签”
常用命令
列出已有标签:git tag
查看标签信息:git show 标签名
创建标签:git tag 标签名
标签推送远程仓库:git push 远程仓库名 标签名
检出标签:git checkout -b 分支名 标签名【某个标签那个版本的东西全放在一个分支里新建一个分支,指向某个tag】
删除本地标签:git tag -d标签名
删除远程标签:git push 远程仓库名 :refs/tags/标签名
相关文章:
git使用总结
概述 简介 Git是一种代码托管技术,很多代码托管平台也是基于Git来实现的。 Git可以帮我们做到很多的事情,比如代码的版本控制,分支管理等。 网址 git官网:https://git-scm.com/ 版本控制系统【VCS】 可以完整保存项目的快照&#…...
使用多进程和多线程实现服务器并发【C语言实现】
在TCP通信过程中,服务器端启动之后可以同时和多个客户端建立连接,并进行网络通信,但是在一个单进程的服务器的时候,提供的服务器代码却不能完成这样的需求,先简单的看一下之前的服务器代码的处理思路,再来分…...
深入理解Linux网络(三):TCP对象创建
深入理解Linux网络(三):TCP对象创建 TCP对象创建inet_createsock_init_data TCP对象创建 常见的三句TCP编程: int main() {int sk socket(AF_INET, SOCK_STREAM, 0);connect(sk, ...)recv(sk, ...) }简单的两三⾏代码ÿ…...
windows server——4.安装DNS管理器
windows server——4.安装DNS管理器 一、准备二、安装DNS管理器1.打开服务器管理器2.添加dns服务器 三、验证 一、准备 windows server电脑(已安装IIS) 静态网站数据包 二、安装DNS管理器 1.打开服务器管理器 2.添加dns服务器 点击管理——添加角色和…...
速盾:金融行业服务器如何避免DDoS攻击?
随着金融行业的数字化和网络化进程加快,服务器成为金融机构不可或缺的一部分。然而,服务器面临的安全威胁也在不断增加,其中之一就是DDoS攻击。DDoS(Distributed Denial of Service)攻击是通过向目标服务器发送大量无法…...
谷粒商城实战笔记-38-前端基础-Vue-指令-单向绑定双向绑定
文章目录 一,插值表达式注意事项1:不适合复杂的逻辑处理注意事项2:插值表达式支持文本拼接注意事项3:插值表达式只能在标签体中 二,v-html和v-textv-textv-html区别总结:最佳实践 三,v-model复选…...
MyPostMan 迭代文档管理、自动化接口闭环测试工具(自动化测试篇)
MyPostMan 是一款类似 PostMan 的接口请求软件,按照 项目(微服务)、目录来管理我们的接口,基于迭代来管理我们的接口文档,文档可以导出和通过 url 实时分享,按照迭代编写自动化测试用例,在不同环…...
https和http有哪些区别?
在今天的互联网世界中,我们经常听到关于HTTPS和HTTP的术语。它们都是超文本传输协议(HTTP)的变种,但它们之间存在着重要的区别。本篇博客将深入探讨HTTPS与HTTP之间的差异以及为什么HTTPS在现代网络中变得如此重要。 目录 1. HT…...
Bubbliiiing 的 Retinaface rknn python推理分析
Bubbliiiing 的 Retinaface rknn python推理分析 项目说明 使用的是Bubbliiiing的深度学习教程-Pytorch 搭建自己的Retinaface人脸检测平台的模型,下面是项目的Bubbliiiing视频讲解地址以及源码地址和博客地址; 作者的项目讲解视频:https:…...
Web前端-Web开发HTML基础8-nav
一. 基础 1. 写一个导航标签,里面是两个超链接,分别指向https://baidu.com和https://huawei.com/cn; 2. 写一个导航标签,里面是三个超链接,分别指向https://baidu.com、https://huawei.com/cn和https://www.nowcoder.c…...
如何建设和维护数据仓库:深入指南
欢迎来到我的博客,很高兴能够在这里和您见面!欢迎订阅相关专栏: V: LAF20151116 进行更多交流学习 ⭐️ 全网最全IT互联网公司面试宝典:收集整理全网各大IT互联网公司技术、项目、HR面试真题. ⭐️ AIGC时代的创新与未来ÿ…...
海思arm-hisiv400-linux-gcc 交叉编译rsyslog 记录心得
需要编译rsyslog,参考海思3536平台上rsyslog交叉编译、使用-CSDN博客和rsyslog移植(亲测成功)_rsyslog交叉编译-CSDN博客 首先下载了要用到的一些库的源码,先交叉编译这些库 原来是在centos6上交叉编译的,结果编译时报缺少软件要…...
IDEA工具中Java语言写小工具遇到的问题
一:读取excel时遇到 org/apache/poi/ss/usermodel/WorkbookProvider 解决办法: 在pom.xml中把poi的引文包放在最前面即可(目前就算放在最后面也不报错了,不知道为啥) 二:本地maven打包时,没有…...
2-38 基于matlab的蚁群算法优化无人机uav巡检
基于matlab的蚁群算法优化无人机uav巡检,巡检位置坐标可根据需求设置,从基地出发,返回基地,使得路径最小。可设置蚁群数量,信息素系数。输出最佳路线长度。程序已调通,可直接运行。 2-38 蚁群算法优化无人…...
解决selenium打印保存为PDF时图片未加载成功的问题
使用selenium打印网页时,如果程序运行很快的话,可能会导致图片没有加载成功即进行了保存,出现这个问题最初的思考是在执行打印任务时使用js进行强制等待,后发现实现效果并不好。在加载页面时使用自动下滑的方式将网页拉到底&#…...
如何将PDF转换成可以直接编辑的CAD图纸?
PDF图纸是为了让用户更好的阅览CAD文件,但是,当我们想要对其进行编辑的时候,PDF图纸就是一个麻烦了。那么PDF转换成CAD后可以编辑吗?如何将PDF转换成可以直接编辑的CAD图纸呢?本篇给你答案。 1、启动迅捷CAD编辑器&…...
【STM32】理解时钟树(图示分析)
文章目录 时钟系统什么是时钟时钟树简化图示类比示例时钟树详解时钟源系统时钟配置各总线时钟外设时钟 时钟系统 什么是时钟 时钟在电子和计算机系统中指的是生成周期性信号的电路或设备,这种周期性信号用于同步系统内的各种操作。时钟信号通常是方波,…...
动态内存四个函数
文章目录 1. malloc2. calloc3. realloc4. free 在C语言中,malloc、calloc、realloc 和 free 是用于动态内存管理的标准库函数,它们定义在 <stdlib.h> 头文件中。以下是这些函数的用法: 1. malloc malloc 函数用于在堆区分配指定大小…...
DevExpress WPF中文教程 - 为项目添加GridControl并将其绑定到数据
DevExpress WPF拥有120个控件和库,将帮助您交付满足甚至超出企业需求的高性能业务应用程序。通过DevExpress WPF能创建有着强大互动功能的XAML基础应用程序,这些应用程序专注于当代客户的需求和构建未来新一代支持触摸的解决方案。 无论是Office办公软件…...
高性能分布式IO系统BL205 OPC UA耦合器
边缘计算是指在网络的边缘位置进行数据处理和分析,而不是将所有数据都传送到云端或中心服务器,这样可以减少延迟、降低带宽需求、提高响应速度并增强数据安全性。 钡铼BL205耦合器就内置边缘计算功能,它不依赖上位机和云平台,就能…...
live555 rtsp服务器实战之doGetNextFrame
live555关于RTSP协议交互流程 live555的核心数据结构值之闭环双向链表 live555 rtsp服务器实战之createNewStreamSource live555 rtsp服务器实战之doGetNextFrame live555搭建实时播放rtsp服务器 注意:该篇文章可能有些绕,最好跟着文章追踪下源码&…...
Nginx系列-3 servername优先级和location优先级和常用正则表达式
1.正则表达式和分组 由于Nginx配置文件中经常出现正则表达式,因此本章节专门对常见的正则表达式进行简单介绍。 [1] 开始与结束 ^表示匹配输入字符串的开始 $表示匹配输入字符串的结束[2] 匹配次数 ?表示匹配0次或者1次 表示匹配1次或多次 *表示匹配0从或多次…...
python—爬虫爬取电影页面实例
下面是一个简单的爬虫实例,使用Python的requests库来发送HTTP请求,并使用lxml库来解析HTML页面内容。这个爬虫的目标是抓取一个电影网站,并提取每部电影的主义部分。 首先,确保你已经安装了requests和lxml库。如果没有安装&#x…...
实现图片拖拽和缩小放大功能。
1. 前言 不知道各位前端小伙伴蓝湖使用的多不多,反正我是经常在用,ui将原型图设计好后上传至蓝湖,前端开发人员就可以开始静态页面的的编写了。对于页面细节看的不是很清楚可以使用滚轮缩放后再拖拽查看,还是很方便的。于是就花了…...
昇思25天学习打卡营第18天|munger85
DCGAN生成漫画头像 首先肯定是下载训练数据,而这些训练数据就是一些卡通头像。后来我们会看到这个具体的头像 就像其他的数据集目录一样,它是由一些目录和这个目录下面的文件组成的数据集。 有相当多的图片。所以可以训练出来比较好的效果。 图片的处理…...
nginx配置文件说明
Nginx的配置文件说明 Nginx配置文件的主要配置块可以分为三个部分:全局配置块(events和http块),events块和http块。这三个部分共同定义了Nginx服务器的整体行为和处理HTTP请求的方式。 全局配置块: 包含了影响Nginx服…...
用不同的url头利用Python访问一个网站,把返回的东西保存为txt文件
这个需要调用requests模块(相当于c的头文件) import requests 还需要一个User-Agent头(这个意思就是告诉python用的什么系统和浏览器) Google Chrome(Windows): Mozilla/5.0 (Windows NT 10.0; Win64; x64…...
一文掌握Prometheus实现页面登录认证并集成grafana
一、接入方式 以保护Web站点的访问控制,如HTTP 服务器配置中实现安全的加密通信和身份验证,保护 Web 应用程序和用户数据的安全性。 1.1 加密密码 通过httpd-tools工具包来进行Web站点加密 yum install -y httpd-tools方式一:通过htpasswd生…...
欢迎来到 Mint Expedition:Web3 和 NFT 的新时代开始
7 月 15 日,Mint Expedition 正式开启,作为 Mint 生态系统的旗舰项目,将彻底变革 Web3 和 NFT 去中心化应用! Mint Expedition 是 Mint 的最新航程,延续了 Mint Forest 的成功。Mint Forest 吸引了超过 41.4 万独立用…...
针对环境构图的全局一致性扫描点云数据对齐(Graph SLAM)
本算法是一个经典的,针对SLAM(simultaneous localization and mapping 即时定位与地图构建)问题而提出的算法。该算法的提出者是Feng Lu和Evangelos Milios,他们在本算法中开创了通过全局优化方程组以减少约束引入的误差来进一步优…...
自己做网站用什么数据库/域名查询备案
以前经常用alert();输出信息,不过这种方法实在是恶心和麻烦。 在有调试功能的浏览,打开调试功能后全用如下方式可以方便输出日志; console.log(对象数组1:, firsts);转载于:https://www.cnblogs.com/baobao2010/archive/2011/12/20/2295199.h…...
dede网站模板怎么安装教程/汕头网站建设方案优化
wdcp非常简单 非常好用但是有时候需要一些自定义配置的时候就不方便了1.去掉public_html 在安装有的程序的时候必须去掉这个 比如osa开源运维软件的时候方法 新建网站后 点击文件管理 选择--> 虚拟主机站点文件(nginx,apache) 根据你的web决定服务器然后找到对应的站点文件 …...
把名字设计成logo/重庆做网络优化公司电话
今天来用Node.js做一个小小的爬虫项目 爬虫目标:http://songshuhui.net/(科学松鼠会) 我们需要创建一个文件夹,自己命名就好,然后在文件夹里创建两个文件夹分别命名为data和img,进入到这个总文件夹的目录终…...
wordpress浏览统计/中国足球世界排名
查看linux的重启记录: last | grep reboot 与之类似可以查看Linux的关机记录: last | grep shutdown...
dw软件网站建设教程视频/seo短视频保密路线
1、先在数据库中新建一个数据库2、配置ODBC连接点击Database --> 配置连接(Configure Connection) --> 选择系统DSN选项卡 --> 按添加按钮 --> 选择SQL Server数据库 --> 设置名称并选择当前服务器--> 使用Windows验证 --> 更改默认数据库为第一步建立的数…...
上海微网站建设/低价刷粉网站推广
为什么80%的码农都做不了架构师?>>> 如果nginx一直出现 nginx bad gateway 5XX 之类的 首先用python manager.py runserver 0.0.0.0:8000 并且把debug改为True 输出调试信息 因为99%的可能性是项目源码中出现了问题 或者是uwsgi和nginx链接的socke…...