[git] git基础知识

git是一个免费的、开源的分布式版本控制系统,可以快速高效地处理从小型到大型的各种项目

git易于学习,性能极快

什么是版本控制?

版本控制是一种记录文件内容变化,以便将来查阅特定版本修订情况,可以记录文件修改历史记录,从而让用户能够查看历史版本,方便版本切换(版本控制本质就是用git管理文件夹,是为了保留之前所有的版本,以便回滚和修改)

Git的常用命令

查看git的版本号

git --version

想要让git对一个目录进行版本控制需要以下步骤:

1.进入要管理的文件夹

2.执行初始化命令(初始化本地库

git init

git init 命令会把这个目录变成git可以管理的仓库

该命令执行完后会在当前目录生成一个 .git 目录,所有 git 所需要的数据和资源都存放在这个目录中

3.管理目录下的文件状态(查看本地库当前的状态,显示有变更的文件)

git status

4.管理指定文件(添加文件到暂存区)

git add 文件名
git add .

5.设置用户签名:用户名称、电子邮箱地址【配置一次即可】 

git config --global user.name "Your Name"
git config --global user.email "you@example.com"

提示Tips

1.签名的作用是区分不同操作者身份,用户的签名信息在每一个版本的提交信息中都能够看到,以此确认本次提交是谁做的。git首次安装必须设置一下用户签名,否则无法提交代码

2.注意这里设置用户签名和将来登录GitHub(或其他代码托管中心)的账号没有任何关系

6.生成版本(将暂存区内容添加到本地库中)

git commit -m "描述信息"

修改文件后重新添加到本地库中

查看状态(检测到工作区有文件被修改)

git status

将修改的文件再次添加到暂存区

git add .

查看状态(工作区的修改添加到了暂存区)

git status

提交到本地库

git commit -m "描述信息"

版本穿梭(回滚)

查看历史提交记录

git log

git log该命令显示了从最新提交到最早提交的所有提交信息,包括提交的作者、提交日期和提交信息等  

git reflog

git reflog该命令也可以查看历史记录  

git reflog  查看版本信息

git log  查看版本详细信息

回滚至之前的版本

git log
git reset --hard 版本号

回滚至之后的版本

git reflog
git reset --hard 版本号

git分支操作

分支就是科幻电影里面的平行宇宙,当你正在电脑前努力学习Git的时候,另一个你正在另一个平行宇宙里努力学习SVN

如果两个平行宇宙互不干扰,那对现在的你也没啥影响。不过在某个时间点,两个平行宇宙合并了,结果你既学会了git又学会了SVN 

在版本控制过程中,同时推进多个任务,我们可以为每个任务单独的创建分支。使用分支意味着程序员可以把自己的工作从开发主线上分离开来,开发自己分支的时候,不会影响主线分支的运行。分支可以简单理解为副本,一个分支就是一个单独的副本

使用分支的好处

1.同时并行推进多个功能开发,提高开发效率

2.各个分支在开发过程中,如果某一个分支开发失败,不会对其他分支有任何影响,失败的分支删除重新开始即可

查看分支

git branch -v

创建分支

git branch 分支名称

切换分支

git checkout 分支名称

创建+切换分支

git checkout -b 分支名称

合并分支(把指定的分支合并到当前分支上)

git merge 需要进行合并的分支名称

提示Tips

合并分支有时也会产生冲突 ,产生冲突的原因是合并分支时,两个分支在同一个文件的同一个位置有两套完全不同的修改,git无法替我们决定使用哪一个,必须人为决定新代码内容

删除分支

git branch -d 需要删除的分支名称

实际应用案例:基于分支紧急修复线上bug

当你接到修复一个代号001的bug的任务时,很自然地,我们可以创建一个分支bug-001来修复它,但是当前正在dev分支上进行的工作还没有提交,我们可以使用git提供的git stash功能,可以把当前工作现场"储藏"起来,等以后恢复现场后继续工作

在dev分支上使用如下git指令

git stash

首先确定要在哪个分支上修复bug,假定需要在master分支上修复,就从master创建临时分支

查看分支

git branch -v

切换回master分支

git checkout master

创建并切换到bug-001分支

git checkout -b bug-001

查看现在所处的分支是否为bug分支

git branch -v

③ 在bug-001分支上进行修复出错的代码后,进行提交

git add .
git commit -m "bug修复完成"

提交完成后,切换回master分支,进行分支合并,最后删除bug分支 

git checkout master
git merge bug-001
git branch -d bug-001

现在bug-001修复完成,是时候接着回到dev分支进行干活了 

git checkout dev
git stash pop

提示Tips

修复bug时,我们会通过创建新的bug分支进行修复,然后进行合并,最后进行删除
当手头工作没有完成时,先把工作现场 git stash 一下,然后去修复bug,修复完bug之后,再使用 git stash pop 恢复工作现场

代码托管中心

代码托管中心是基于网络服务器的远程代码仓库,一般我们简单称为远程库

GitLab、GitHub、Gitee码云

局域网

    √  GitLab

互联网

    √  GitHub(外网)

    √  Gitee码云(国内网站)

创建远程库别名

git remote add 别名 远程库地址

查看当前所有远程地址别名

git remote -v

推送本地库分支到远程库 

git push 别名 分支

拉取远程库到本地库 

git pull 别名 分支

克隆远程库到本地库

git clone 需要克隆的远程库地址

克隆clone会帮我们进行拉取代码、初始化本地仓库以及创建别名 

Git常用命令速查表

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/63859.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【ElasticSearch入门】

目录 1.ElasticSearch的简介 2.用数据库实现搜素的功能 3.ES的核心概念 3.1 NRT(Near Realtime)近实时 3.2 cluster集群,ES是一个分布式的系统 3.3 Node节点,就是集群中的一台服务器 3.4 index 索引(索引库) 3.5 type类型 3.6 doc…

通达OA SQL注入漏洞【CVE-2023-4166】

通达OA SQL注入漏洞【CVE-2023-4166】 一、产品简介二、漏洞概述三、影响范围四、复现环境POC小龙POC检测工具: 五、修复建议 免责声明:请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损…

我的Python教程:使用Pyecharts画柱状图

Pyecharts是一个用于生成 Echarts 图表的 Python 库。Echarts 是一个基于 JavaScript 的数据可视化库,提供了丰富的图表类型和交互功能。通过 Pyecharts,你可以使用 Python 代码生成各种类型的 Echarts 图表,例如折线图、柱状图、饼图、散点图…

电脑开不了机如何解锁BitLocker硬盘锁

事情从这里说起,不想看直接跳过 早上闲着无聊,闲着没事干,将win11的用户名称改成了含有中文字符的用户名,然后恐怖的事情发生了,蓝屏了… 然后就是蓝屏收集错误信息,重启,蓝屏收集错误信息&…

Windows下安装 Redis

目录 1.下载 1.1.Redis官网 1.2.github下载地址 2.安装步骤 2.1.解压Redis压缩包 2.2.创建临时服务 2.3.启动客户端 2.4.注册Redis服务 3.总结 4.致谢 1.下载 1.1.Redis官网 Download | Redis Redis 官方网站没有提供 Windows 版的安装包,但可以通过…

x11 gtk qt gnome kde 之间的区别和联系

Linux 下的图形库介绍 一、Linux 图形领域的基础设施 1.1 X Window X Window从逻辑上分为三层:X Server、X Client和X协议。 最底层的X Server(X服务器)主要处理输入/输出信息并维护相关资源,它接受来自键盘、鼠标的操作并将…

【ES】笔记-函数参数默认值

函数参数默认值 ES6 允许给函数参数赋值初始值 1. 形参初始值 具有默认值的参数,一般放到最后 function add(a,b,c10){return abc}let resultadd(1,2);console.log(result);2. 与解构赋值结合 function connect({host"127.0.0.1",username,password,port…

AI绘画网站都有哪些比较好用?

人工智能绘画网站是一种利用人工智能技术进行图像处理和创作的网站。这些绘画网站通常可以帮助艺术家以人工智能绘画的形式快速生成有趣、美丽和独特的绘画作品。无论你是专业的艺术家还是对人工智能绘画感兴趣的普通人,人工智能绘画网站都可以为你提供新的创作灵感…

【C语言】进阶指针,超详解,含丰富代码示例

文章目录 前言指针进阶的重点内容1.字符指针2.数组指针3.指针数组4.函数指针5.函数指针数组6. 指向函数指针数组的指针 总结 这里是初阶的链接,方便大家对照查看!!!添加链接描述 前言 大家好呀,今天和大家将指针进阶…

运维监控学习笔记1

1、监控对象: 1、监控对象的理解;CPU是怎么工作的; 2、监控对象的指标:CPU使用率;上下文切换; 3、确定性能基准线:CPU负载多少才算高; 2、监控范围: 1、硬件监控&#x…

JVM内存区域

预备 为了更好的理解类加载和垃圾回收,先要了解一下JVM的内存区域(如果没有特殊说明,都是针对的是 HotSpot 虚拟机。)。 Java 源代码文件经过编译器编译后生成字节码文件,然后交给 JVM 的类加载器,加载完…

SpringBoot复习:(36)国际化

一、Resources目录下建立一个目录(比如international)来存储资源文件 message.properties 空的,但不能没有 message_zh_CN.properties hello您好message_en_us.properties hellohello world二、自动配置类MessageSourceAutoConfiguration 常量MESSAGE…