Git使用入门
一、Git简介
Git 是一个开源的分布式版本控制系统。
Git版本控制的功能为保存不同版本的代码,保存代码的地方叫做仓库。
每个仓库中有多个分支,每个分支上又有很多节点,每个节点代表一个版本,不同的分支可以进行合并,实现多个功能的同时开发。
一个完整的Git版本控制系统有两个仓库,一个仓库在服务器上,另一个仓库在本地。服务器仓库主要作用为团队协作和多端同步,可以将本地的仓库的某个分支上传至服务器某个分支;本地仓库的作用主要是提交自己的代码至本地仓库某个分支和下载服务器仓库的某个分支。
二、安装Git
1、官网下载git安装,有Windows版本和Linux版本:http://git-scm.com/downloads
2、配置用户信息:
git config --global user.email "xxx@yy.com"
git config --global user.name "yyy"
git config user.email "xxx@yy.com"
git config user.name "zzz"
如果用了 --global 选项,那么更改的配置文件就是位于你用户主目录下的那个,以后你所有的项目都会默认使用这里配置的用户信息。
如果要在某个特定的项目中使用其他名字或者电邮,只要去掉 --global 选项重新配置即可,新的设定保存在当前项目的 .git/config 文件里。
3、查看配置信息
git config --list
三、Git使用流程
1 工作区:本地,工作的目录,就是电脑里能看到的目录。
2 暂存区:本地,工作区的更改,提交到暂存区(在暂存区临时存储),一般存放在 .git 目录下的 index 文件(.git/index)中。
3 版本库:本地文件,内容变更记录。工作区有一个隐藏目录 .git,这个不算工作区,而是 Git 的版本库。


四、Git常规操作
1、git init # 初始化git仓库(保存代码的地方叫做仓库)
git init #“用来初始化一个空的git本地仓库。执行完上面的命令,当前目录下会自动生成.git隐藏文件夹,该隐藏文件夹就是git版本库”。这样我们才能在使用git命令进行相关的操作
cd 目标文件夹内部 #将已有的文件夹 - 初始化为git仓库
git init
-------------------------------------------------------------------
cd 目标目录 #在指定目录下 - 初始化git仓库
git init 仓库名注意:.git目录默认隐藏,可以通过命令ls -ah显示
2、仓库用户名/邮箱配置
要往版本库提变更,需要先配置用户
# 全局配置
git config --global user.email "xxx@yy.com"
git config --global user.name "yyy"
# 本地仓库用户名/邮箱配置
git config user.email "xxx@yy.com"
git config user.name "zzz"
3、下载Git代码到本地:
git clone [https]
4、git status # 查看状态
-红色:更改没有被提交到暂存区-绿色:更改被提交到暂存区,但是没有被提交到版本库
5、提交到暂存区
git add a.txt # 把a.txt提交到暂存区 (git add .)git add . # 当前路径下所有更改,提交到暂存区
6、从暂存区提交到版本库(不能从工作区直接提交到版本库)
git commit -m '注释注释一定要加,并且有意义' # 从暂存区提交到版本库(必须加注释,不加注释提交不上去)
7、推送本地仓库当前分支代码至远程git仓库
git push <远程主机名> <本地分支名>:<远程分支名>
8、将git最新代码拉下来与当前本地分支合并
git pull [https]
9.删除git仓库指定文件文件或文件夹
dir 查看文件或文件夹
git rm -r --cached 文件或文件夹名 #待删除的文件夹或者文件名
10、回滚(回滚到指定版本)
git reset --hard 版本号
五、Git GUI使用方法
Git还有GUI工具,比较适用小白。

六、Git创建分支
1、查看分支
git branch # 查看有哪些分支,绿色表示当前所在分支
2、创建分支
git branch (branchname) #在那个分支上创建分支,目前新分支和所在分支代码一样
3、删除分支
git branch -d (branchname)
4、切换分支
git checkout (branchname)
5 分支合并
git merge 分支名 #现在在dev分支,要把dev分支合并到master分支:先切换到master分支,再执行合并dev分支的命令
6 创建并切换到某个分支(两部并作一步)
git checkout -b 分支名 #检出
7、查看提交历史
git log - 查看历史提交记录。
git blame <file> - 以列表形式查看指定文件的历史修改记录。
七、tag的简单使用
1、打tag
git tag -a 标签名称 -m 附注信息 :直接给当前的提交版本创建一个标签
git tag -a 标签名称 提交版本号 -m 附注信息 :给指定的提交版本创建一个标签
需要说明的是,创建 tag 是基于本地分支的 commit,而且与分支的推送是两回事,就是说分支已经推送到远程了,但是你的 tag 并没有,如果把 tag 推送到远程分支上,需要另外执行 tag 的推送命令
2、查看tag
git tag #直接列出所有的标签
git tag -l #查看本地所有 tag
git tag -l xxxx : 可以根据 xxxx 进行标签的筛选
git ls-remote --tags origin #查看远程所有 tag
3 删除本地仓库tag
git tag -d <tagName> #删除标签
4 提交
git add .
git commit -m “fixed some bugs”
git tag -a 0.1.3 -m “Release version 0.1.3″
5 推送到远程仓位
默认情况下,git push 命令并不会把标签推送到远程仓库中。因此,必须手动地将本地的标签推送到远程仓库中。
git push origin 标签名称 : 将指定的标签上传到远程仓库
git push origin --tags : 将所有不在远程仓库中的标签上传到远程仓库
6 删除远程仓库的标签
$ git push origin :regs/tags/标签名称
$ git push origin --delete 标签名称
7、重命名tag
这个本质上是删除掉旧名字 tag ,然后再新建新名字 tag ,然后实现重命名的作用。
如果 tag 只存在本地,那么只需要删除本地的旧名字 tag ,然后新建新名字 tag:
git tag -d <oldTagName>
git tag <newTagName>
git push origin <newTagName> //推送到远程仓库
若已经推送到远程了,那么不仅要删除本地的,还要删除远程的,再重新创建和推送:
git tag -d <oldTagName>
git push origin :<oldTagName>
git tag <newTagName>
git push origin <newTagName> //推送到远程仓库
8、检出标签
检出标签的理解:我想在这个标签的基础上进行其他的开发。其实质就是以标签指定的版本为基础版本,新建一个分支,继续其他的操作。因此,就是新建分支的操作了。
$ git checkout -b 分支名称 标签名称
相关文章:
Git使用入门
一、Git简介 Git 是一个开源的分布式版本控制系统。 Git版本控制的功能为保存不同版本的代码,保存代码的地方叫做仓库。 每个仓库中有多个分支,每个分支上又有很多节点,每个节点代表一个版本,不同的分支可以进行合并࿰…...
电机矢量控制算法和例程
电机矢量控制算法是一种高级的电机控制方法,它通过将电机转子空间矢量转换到旋转坐标系中,并在该坐标系中进行控制来实现对电机的精确控制。下面是对电机矢量控制算法的详细解释: 坐标系变换:电机矢量控制首先将电机转子空间矢量变…...
std::string_view概念原理及应用
概念 使用const string&作为参数是先使用字符串字面量编译器会创建一个临时字符串对象然后创建std::string。 或者一个函数提供char*和const string&参数的两个版本函数,不是优雅的解决方案。 于是需要一个只使用内存不维护内存的类。 原理 在visual s…...
lodash库_.chunk、_.pick、_.omit、_.cloneDeep、_.debounce方法
lodash 模块化、高性能的 JavaScript 实用工具库。官方文档:https://www.lodashjs.com 1.对数组进行分组 _.chunk(array, [size1]) 使用场景,如移动端页面一行能放5个元素,总共7条数据,将一维数组转为二维数组,让一个…...
Java使用FFmpeg对视频文件打标记
免安装 FFmpeg <dependency><groupId>ws.schild</groupId><artifactId>jave-all-deps</artifactId><version>3.0.1</version><exclusions><!-- 排除windows 32位系统 --><exclusion><groupId>ws.sch…...
Redux 学习笔记
在使用 React Redux 前,我们首先了解一下 Redux 的一些基础知识。 Redux 是 JavaScript 应用程序中用于状态管理的容器。它不依赖于任何框架,可以与任何 UI 库和框架一起使用。在应用程序中使用 Redux 时,Redux 是以可预测的方式管理状态。 …...
【Bug】8086汇编学习
文章目录 随笔Bug1、masm编译报错:Illegal use of register2、debug中使用段前缀3、[idata]在编译器中的处理4、push立即数报错5、报错:improper operand type6、程序莫名跳转到未知位置 (doing)7、DOSBox失去响应8、程序运行显示乱码9、程序运行导致DOS…...
JetBrains系列IDE全家桶激活
jetbrains全家桶 正版授权,这里有账号授权的渠道: https://www.mano100.cn/thread-1942-1-1.html 附加授权后的一张图片...
洛谷p1618三连击
import java.util.Scanner; //将 1-9 共9个数分成3组,分别组成3个三位数,且使这3个三位数构成A:B:C的比例,试求出所有满足条件的3个三位数。不满足输出“No!!!”。 public class Main {public static void main(String[] args) {Scanner sc …...
微信公众号h5写一个全局调用微信分享功能
1. 首先先安装依赖 npm install weixin-js-sdk --save 2. app.vue文件 <script> export default { onLaunch: function(e) {}, onShow: function(e) { console.log(App Show页面初始); // 路由参数存缓存的 这是为了防止他…...
聊聊精益需求的产生过程
这是鼎叔的第七十八篇原创文章。行业大牛和刚毕业的小白,都可以进来聊聊。 欢迎关注本公众号《敏捷测试转型》,星标收藏,大量原创思考文章陆续推出。本人新书《无测试组织-测试团队的敏捷转型》已出版ÿ…...
Linux - 还不懂 gdb 调试器?(调试软件)
前言 当前,我们可以使用 make/makefile 来程序化执行代码文件;可以使用 gcc/g 等编译器来编译代码;可以使用 vim 编辑器来编写代码;其实在 Linux 当中还有一个工具,可以实现调试工作,这个工具就是 -- gdb。…...
Linux:程序地址空间/虚拟地址等相关概念理解
文章目录 程序地址空间虚拟地址和物理地址地址的转换地址空间是什么? 程序地址空间 在C和C程序中,一直有一个观点是,程序中的各个变量等都会有一定的地址空间,因此才会有诸如取地址,通过地址访问等操作,那…...
Python之爬虫
目录 HTTP请求HTTP响应获得页面响应伪装用户访问打包数据爬取豆瓣top250 HTTP请求 HTTP:HypertextTransferProtcol 超文本传输协议 1、请求行 POST/user/info?new_usertrue HTTP/1.1#资源了路径user/info 查询参数new_usertrue 协议版本HTTP/1.1 2、请求头 Ho…...
打造自己的前端组件库(奶妈版,超详细)
打造自己的前端组件库 demo是开源的,自己上npm 或者 github 上都能搜到 新建vue项目(sass js vue2) vue create yt-ui 修改文件目录(如下) 修改: 1.src 更名 examples; 2. src/components移动到项目最外层;3.vue.config.js更改入口文件 /…...
6.调制阶数相关
1、调制阶数与峰均比的关系 调制阶数(modulation order)对峰均比(有一定的影响。 峰均比是用于衡量调制信号或波形在幅度上的动态范围的指标。它表示信号的最大峰值与平均功率之间的比值。较高的峰均比可能导致信号在传输或放大过程中出现过…...
Maven多模块管理(转载)
注意:父模块需设定打包方式为pom https://cloud.tencent.com/developer/article/1667275 dependencyManagement 统一管理子类依赖版本 在父类maven中加入,不会继承给子类,只能规定子类的依赖版本,子类加入dependence后无需写入 …...
运维学习CentOS 7进行Nightingale二进制部署
.因为Nightingale需要MySQL保存一些数据,所以可以参考《CentOS 7.6使用mysql-8.0.31-1.el7.x86_64.rpm-bundle.tar安装Mysql 8.0》部署MySQL。 https://github.com/ccfos/nightingale/releases是可以github上下载Nightingale二进制安装包。 https://n9e.github.io/…...
安装Docker
本安装教程参考Docker官方文档,地址如下:https://docs.docker.com/engine/install/centos/ 卸载旧版 首先如果系统中已经存在旧的Docker,则先卸载: yum remove docker \ docker-client \ docker-client-latest \ docker-common…...
【uniapp/uView】解决消息提示框悬浮在下拉框之上
需要实现这样的效果,即 toast 消息提示框在 popup 下拉框之上: 解决方法,把 <u-toast ref"uToast" /> 放在 u-popup 里面即可,这样就可以提升 toast 的优先级: <!-- 弹出下拉框 --><u-popu…...
eNSP-Cloud(实现本地电脑与eNSP内设备之间通信)
说明: 想象一下,你正在用eNSP搭建一个虚拟的网络世界,里面有虚拟的路由器、交换机、电脑(PC)等等。这些设备都在你的电脑里面“运行”,它们之间可以互相通信,就像一个封闭的小王国。 但是&#…...
Mybatis逆向工程,动态创建实体类、条件扩展类、Mapper接口、Mapper.xml映射文件
今天呢,博主的学习进度也是步入了Java Mybatis 框架,目前正在逐步杨帆旗航。 那么接下来就给大家出一期有关 Mybatis 逆向工程的教学,希望能对大家有所帮助,也特别欢迎大家指点不足之处,小生很乐意接受正确的建议&…...
【Zephyr 系列 10】实战项目:打造一个蓝牙传感器终端 + 网关系统(完整架构与全栈实现)
🧠关键词:Zephyr、BLE、终端、网关、广播、连接、传感器、数据采集、低功耗、系统集成 📌目标读者:希望基于 Zephyr 构建 BLE 系统架构、实现终端与网关协作、具备产品交付能力的开发者 📊篇幅字数:约 5200 字 ✨ 项目总览 在物联网实际项目中,**“终端 + 网关”**是…...
C++ Visual Studio 2017厂商给的源码没有.sln文件 易兆微芯片下载工具加开机动画下载。
1.先用Visual Studio 2017打开Yichip YC31xx loader.vcxproj,再用Visual Studio 2022打开。再保侟就有.sln文件了。 易兆微芯片下载工具加开机动画下载 ExtraDownloadFile1Info.\logo.bin|0|0|10D2000|0 MFC应用兼容CMD 在BOOL CYichipYC31xxloaderDlg::OnIni…...
Python ROS2【机器人中间件框架】 简介
销量过万TEEIS德国护膝夏天用薄款 优惠券冠生园 百花蜂蜜428g 挤压瓶纯蜂蜜巨奇严选 鞋子除臭剂360ml 多芬身体磨砂膏280g健70%-75%酒精消毒棉片湿巾1418cm 80片/袋3袋大包清洁食品用消毒 优惠券AIMORNY52朵红玫瑰永生香皂花同城配送非鲜花七夕情人节生日礼物送女友 热卖妙洁棉…...
【JVM面试篇】高频八股汇总——类加载和类加载器
目录 1. 讲一下类加载过程? 2. Java创建对象的过程? 3. 对象的生命周期? 4. 类加载器有哪些? 5. 双亲委派模型的作用(好处)? 6. 讲一下类的加载和双亲委派原则? 7. 双亲委派模…...
git: early EOF
macOS报错: Initialized empty Git repository in /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/.git/ remote: Enumerating objects: 2691797, done. remote: Counting objects: 100% (1760/1760), done. remote: Compressing objects: 100% (636/636…...
C++实现分布式网络通信框架RPC(2)——rpc发布端
有了上篇文章的项目的基本知识的了解,现在我们就开始构建项目。 目录 一、构建工程目录 二、本地服务发布成RPC服务 2.1理解RPC发布 2.2实现 三、Mprpc框架的基础类设计 3.1框架的初始化类 MprpcApplication 代码实现 3.2读取配置文件类 MprpcConfig 代码实现…...
Spring Boot + MyBatis 集成支付宝支付流程
Spring Boot MyBatis 集成支付宝支付流程 核心流程 商户系统生成订单调用支付宝创建预支付订单用户跳转支付宝完成支付支付宝异步通知支付结果商户处理支付结果更新订单状态支付宝同步跳转回商户页面 代码实现示例(电脑网站支付) 1. 添加依赖 <!…...
篇章二 论坛系统——系统设计
目录 2.系统设计 2.1 技术选型 2.2 设计数据库结构 2.2.1 数据库实体 1. 数据库设计 1.1 数据库名: forum db 1.2 表的设计 1.3 编写SQL 2.系统设计 2.1 技术选型 2.2 设计数据库结构 2.2.1 数据库实体 通过需求分析获得概念类并结合业务实现过程中的技术需要&#x…...
