当前位置: 首页 > news >正文

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版本控制的功能为保存不同版本的代码&#xff0c;保存代码的地方叫做仓库。 每个仓库中有多个分支&#xff0c;每个分支上又有很多节点&#xff0c;每个节点代表一个版本&#xff0c;不同的分支可以进行合并&#xff0…...

电机矢量控制算法和例程

电机矢量控制算法是一种高级的电机控制方法&#xff0c;它通过将电机转子空间矢量转换到旋转坐标系中&#xff0c;并在该坐标系中进行控制来实现对电机的精确控制。下面是对电机矢量控制算法的详细解释&#xff1a; 坐标系变换&#xff1a;电机矢量控制首先将电机转子空间矢量变…...

std::string_view概念原理及应用

概念 使用const string&作为参数是先使用字符串字面量编译器会创建一个临时字符串对象然后创建std::string。 或者一个函数提供char*和const string&参数的两个版本函数&#xff0c;不是优雅的解决方案。 于是需要一个只使用内存不维护内存的类。 原理 在visual s…...

lodash库_.chunk、_.pick、_.omit、_.cloneDeep、_.debounce方法

lodash 模块化、高性能的 JavaScript 实用工具库。官方文档&#xff1a;https://www.lodashjs.com 1.对数组进行分组 _.chunk(array, [size1]) 使用场景&#xff0c;如移动端页面一行能放5个元素&#xff0c;总共7条数据&#xff0c;将一维数组转为二维数组&#xff0c;让一个…...

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 前&#xff0c;我们首先了解一下 Redux 的一些基础知识。 Redux 是 JavaScript 应用程序中用于状态管理的容器。它不依赖于任何框架&#xff0c;可以与任何 UI 库和框架一起使用。在应用程序中使用 Redux 时&#xff0c;Redux 是以可预测的方式管理状态。 …...

【Bug】8086汇编学习

文章目录 随笔Bug1、masm编译报错&#xff1a;Illegal use of register2、debug中使用段前缀3、[idata]在编译器中的处理4、push立即数报错5、报错&#xff1a;improper operand type6、程序莫名跳转到未知位置 (doing)7、DOSBox失去响应8、程序运行显示乱码9、程序运行导致DOS…...

JetBrains系列IDE全家桶激活

jetbrains全家桶 正版授权&#xff0c;这里有账号授权的渠道&#xff1a; https://www.mano100.cn/thread-1942-1-1.html 附加授权后的一张图片...

洛谷p1618三连击

import java.util.Scanner; //将 1-9 共9个数分成3组&#xff0c;分别组成3个三位数&#xff0c;且使这3个三位数构成A:B:C的比例&#xff0c;试求出所有满足条件的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页面初始); // 路由参数存缓存的 这是为了防止他…...

聊聊精益需求的产生过程

这是鼎叔的第七十八篇原创文章。行业大牛和刚毕业的小白&#xff0c;都可以进来聊聊。 欢迎关注本公众号《敏捷测试转型》&#xff0c;星标收藏&#xff0c;大量原创思考文章陆续推出。本人新书《无测试组织-测试团队的敏捷转型》​​​​​​​​​​​​​​已出版&#xff…...

Linux - 还不懂 gdb 调试器?(调试软件)

前言 当前&#xff0c;我们可以使用 make/makefile 来程序化执行代码文件&#xff1b;可以使用 gcc/g 等编译器来编译代码&#xff1b;可以使用 vim 编辑器来编写代码&#xff1b;其实在 Linux 当中还有一个工具&#xff0c;可以实现调试工作&#xff0c;这个工具就是 -- gdb。…...

Linux:程序地址空间/虚拟地址等相关概念理解

文章目录 程序地址空间虚拟地址和物理地址地址的转换地址空间是什么&#xff1f; 程序地址空间 在C和C程序中&#xff0c;一直有一个观点是&#xff0c;程序中的各个变量等都会有一定的地址空间&#xff0c;因此才会有诸如取地址&#xff0c;通过地址访问等操作&#xff0c;那…...

Python之爬虫

目录 HTTP请求HTTP响应获得页面响应伪装用户访问打包数据爬取豆瓣top250 HTTP请求 HTTP&#xff1a;HypertextTransferProtcol 超文本传输协议 1、请求行 POST/user/info?new_usertrue HTTP/1.1#资源了路径user/info 查询参数new_usertrue 协议版本HTTP/1.1 2、请求头 Ho…...

打造自己的前端组件库(奶妈版,超详细)

打造自己的前端组件库 demo是开源的&#xff0c;自己上npm 或者 github 上都能搜到 新建vue项目(sass js vue2) vue create yt-ui 修改文件目录(如下) 修改&#xff1a; 1.src 更名 examples; 2. src/components移动到项目最外层&#xff1b;3.vue.config.js更改入口文件 /…...

6.调制阶数相关

1、调制阶数与峰均比的关系 调制阶数&#xff08;modulation order&#xff09;对峰均比&#xff08;有一定的影响。 峰均比是用于衡量调制信号或波形在幅度上的动态范围的指标。它表示信号的最大峰值与平均功率之间的比值。较高的峰均比可能导致信号在传输或放大过程中出现过…...

Maven多模块管理(转载)

注意&#xff1a;父模块需设定打包方式为pom https://cloud.tencent.com/developer/article/1667275 dependencyManagement 统一管理子类依赖版本 在父类maven中加入&#xff0c;不会继承给子类&#xff0c;只能规定子类的依赖版本&#xff0c;子类加入dependence后无需写入 …...

运维学习CentOS 7进行Nightingale二进制部署

.因为Nightingale需要MySQL保存一些数据&#xff0c;所以可以参考《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官方文档&#xff0c;地址如下&#xff1a;https://docs.docker.com/engine/install/centos/ 卸载旧版 首先如果系统中已经存在旧的Docker&#xff0c;则先卸载&#xff1a; yum remove docker \ docker-client \ docker-client-latest \ docker-common…...

【uniapp/uView】解决消息提示框悬浮在下拉框之上

需要实现这样的效果&#xff0c;即 toast 消息提示框在 popup 下拉框之上&#xff1a; 解决方法&#xff0c;把 <u-toast ref"uToast" /> 放在 u-popup 里面即可&#xff0c;这样就可以提升 toast 的优先级&#xff1a; <!-- 弹出下拉框 --><u-popu…...

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…...

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…...

Ubuntu系统下交叉编译openssl

一、参考资料 OpenSSL&&libcurl库的交叉编译 - hesetone - 博客园 二、准备工作 1. 编译环境 宿主机&#xff1a;Ubuntu 20.04.6 LTSHost&#xff1a;ARM32位交叉编译器&#xff1a;arm-linux-gnueabihf-gcc-11.1.0 2. 设置交叉编译工具链 在交叉编译之前&#x…...

应用升级/灾备测试时使用guarantee 闪回点迅速回退

1.场景 应用要升级,当升级失败时,数据库回退到升级前. 要测试系统,测试完成后,数据库要回退到测试前。 相对于RMAN恢复需要很长时间&#xff0c; 数据库闪回只需要几分钟。 2.技术实现 数据库设置 2个db_recovery参数 创建guarantee闪回点&#xff0c;不需要开启数据库闪回。…...

以下是对华为 HarmonyOS NETX 5属性动画(ArkTS)文档的结构化整理,通过层级标题、表格和代码块提升可读性:

一、属性动画概述NETX 作用&#xff1a;实现组件通用属性的渐变过渡效果&#xff0c;提升用户体验。支持属性&#xff1a;width、height、backgroundColor、opacity、scale、rotate、translate等。注意事项&#xff1a; 布局类属性&#xff08;如宽高&#xff09;变化时&#…...

Linux相关概念和易错知识点(42)(TCP的连接管理、可靠性、面临复杂网络的处理)

目录 1.TCP的连接管理机制&#xff08;1&#xff09;三次握手①握手过程②对握手过程的理解 &#xff08;2&#xff09;四次挥手&#xff08;3&#xff09;握手和挥手的触发&#xff08;4&#xff09;状态切换①挥手过程中状态的切换②握手过程中状态的切换 2.TCP的可靠性&…...

ServerTrust 并非唯一

NSURLAuthenticationMethodServerTrust 只是 authenticationMethod 的冰山一角 要理解 NSURLAuthenticationMethodServerTrust, 首先要明白它只是 authenticationMethod 的选项之一, 并非唯一 1 先厘清概念 点说明authenticationMethodURLAuthenticationChallenge.protectionS…...

相机Camera日志分析之三十一:高通Camx HAL十种流程基础分析关键字汇总(后续持续更新中)

【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了:有对最普通的场景进行各个日志注释讲解,但相机场景太多,日志差异也巨大。后面将展示各种场景下的日志。 通过notepad++打开场景下的日志,通过下列分类关键字搜索,即可清晰的分析不同场景的相机运行流程差异…...

CMake 从 GitHub 下载第三方库并使用

有时我们希望直接使用 GitHub 上的开源库,而不想手动下载、编译和安装。 可以利用 CMake 提供的 FetchContent 模块来实现自动下载、构建和链接第三方库。 FetchContent 命令官方文档✅ 示例代码 我们将以 fmt 这个流行的格式化库为例,演示如何: 使用 FetchContent 从 GitH…...

vue3+vite项目中使用.env文件环境变量方法

vue3vite项目中使用.env文件环境变量方法 .env文件作用命名规则常用的配置项示例使用方法注意事项在vite.config.js文件中读取环境变量方法 .env文件作用 .env 文件用于定义环境变量&#xff0c;这些变量可以在项目中通过 import.meta.env 进行访问。Vite 会自动加载这些环境变…...