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

Git 内容学习

一、Git 的理解

Git是一个分布式版本控制系统(Distributed Version Control System,简称 DVCS),用于对项目源代码进行管理和跟踪变更。分为两种类型的仓库:本地仓库和远程仓库。

二、Git 的工作流程

详解如下:

本地仓库:是在开发人员自己电脑上的Git仓库,存放我们的代码(.git 隐藏文件夹就是我们的本地仓库)

远程仓库:是在远程服务器上的Git仓库,存放代码(可以是github.com或者gitee.com 上的仓库,或者自己该公司的服务器)

工作区: 我们自己写代码(文档)的地方

暂存区: 在 本地仓库中的一个特殊的文件(index) 叫做暂存区,临时存储我们即将要提交的文件区域。


clone(克隆):将远程仓库中克隆代码到本地仓库。

checkout(检出):从本地仓库中检出一个仓库分支然后进行修订。

add(添加):在提交前先将代码提交到暂存区。

commit(提交):提交到本地仓库。本地仓库中保存修改的各个历史版本。

fetch(抓取):从远程仓库抓取到本地仓库,不进行任何的合并动作,一般操作比较少。

Pull(拉取):从远程仓库代码下载到本地仓库,自动进行合并(merge),然后放到工作区,相当于fetch+merge。

push(推送):修改完成后,需要和团队共享代码时,将本地仓库代码推送到远程仓库。

三、Git 的安装

1.Git的下载和安装

前面有一篇文章写过Windows版本的git安装教程

Git GUI:Git提供的图形化界面工具。

Git Bash:Git提供的命令行工具。

2.Git的基本配置

当安装Git后首先要做的事情是设置用户名称和email地址(非常重要,因为每次Git提交都会使用该用户信息)

基本配置(打开Git Bash):
1.设置用户信息
git config --global user.name "用户名称"
git config --global user.email "email地址"
2.查看配置信息
git config --global user.name
git config --global user.email

四、Git 的基本使用(本地仓库)

1.获取本地仓库

1)在电脑任意位置创建一个目录(eg:test),作为我们的本地Git仓库;

2)进入该目录,打开Git Bash窗口;

3)执行命令git init;

4)如果创建成功可在文件夹里看到隐藏的.git目录;

git init : 初始化当前目录为一个git仓库

2.基本操作指令

Git工作目录下对于文件的修改(增加,删除,更新)会存在几个状态,这些修改的状态会随着我们执行Git目录而发生变化。(Git工作目录:本地仓库里除了隐藏的.git目录。)

1)控制状态转化的命令:
git add (工作区  -->  暂存区) / git add . 添加当前目录所有文件到暂存区
git commit (暂存区  -->  本地仓库)
2)查看修改状态(status)
git status
3)添加工作区到暂存区(add)
git add 单个文件名/.(通配符)  添加工作区一个文件/所有文件的修改到暂存区

4)提交暂存区到本地仓库(commit)

git commit -m "注释内容"    提交暂存区内容到本地仓库的当前分支
5)查看日志提交记录
git log
git reflog (同时存在就删除的记录)
git log [option]
其中option有:
--add:显示所有分支    
--pretty=oneline:将提交信息显示为一行  
--abbrev-commit:使得输出的commitld更简短    
--graph:以图的形式显示
6)版本回退/切换
git reset --hard commitID   (commitID可使用git log指令查看)
git reflog (查看已经删除的记录)
7)添加文件至忽略列表

一般我们有些文件无需纳入Git的管理,也不希望它们总出现在为跟踪文件列表,通常都是些自动生成的文件,比如日志文件,或者编译过程中创建的临时文件等,在这种情况下,我们可以在工作目录中创建一个名为.gitignore的文件(文件名称固定),在里面列出忽略的文件模式。

常见格式:

# 所有以.a 结尾的文件讲被忽略(递归)
*.a
# 不管其他规则怎样,强制不忽略  lib.a
!lib.a
# 只忽略 文件 TODO (注意这里是文件)
/TODO
# 忽略 build文件夹下所有内容(递归) 这里是文件夹
build/
# 忽略 doc 目录下以 *.txt 结尾的文件 (不递归)
doc/*.txt
# 忽略 doc 目录下以 *.pdf 结尾的文件 (递归)
doc/**/*.pdf

3.分支

几乎所有的版本控制系统都以某种形式支持分支。 使用分支意味着你可以把你的工作从开发主线上分离开来,避免影响开发主线。多线程开发,可以同时开启多个任务的开发,多个任务之间互不影响。(把你的工作从开发主线上分离开来进行重大的Bug修改、开发新的功能,以免影响开发主线。)

1)查看本地分支
git branch
2)创建本地分支
git branch 分支名
3)切换分支(checkout)
git checkout 分支名
git checkout -b 分支名	(切换到一个不存在的分支--创建并切换)
4)合并分支(merge)
git merge 分支名称	(一个分支上的提交可以合并到另一个分支)
5)删除分支
不能删除当前分支,只能删除其他分支
git branch -d 分支名称	删除分支前,需要做各种检查
git branch -D 分支名称  不做任何检查,强制删除
6)解决分支

当两个分支上对文件的修改存在冲突,eg:同时修改了同一个文件的同一行,这时需要手动解决冲突。

1.处理文件冲突的地方(之间将每个分支进行修改的内容改为最终希望合并的内容);

2.将解决完冲突的文件加入暂存区(add);

3.提交到仓库(commit);

4.开发中分支使用原则与流程

  • master(生成)分支

    线上分支,主分支,中小模型显目作为线上运行的应用对应的分支;

  • develop(开发)分支

    是master创建的分支,一般作为开发部门的主要开发分支,如果没有其他并行开发不同期上线要求,都可以在此版本进行开发,阶段开发完成后,需要合并到master分支,准备上线;

  • feature/xxxx分支

    从develop创建的分支,一般是同期并行开发,但不同期上线时创建的分支,分支上研发任务完成后合并到develop分支;

  • hotfix/xxxx分支

    从master派生的分支,一般作为线上bug修复使用,修复完成后需要合并到master,test,develop分支;

  • 其他分支

五、Git 的基本使用(远程仓库)

1.常用的远程仓库托管服务

https://github.com/	(国外)
https://gitee.com/	(国内)
https://about.gitlab.com/github  是一个基于git实现在线代码托管的仓库,向互联网开放,企业版要收钱。
gitee    即码云,是 oschina 免费给企业用的,不用自己搭建环境。
gitlab	类似 github,一般用于在企业内搭建git私服,要自己搭环境。

2.gitee 使用

1)码云账户注册
2)创建远程仓库

3)配置SSH公钥(解决无需每次都输入身份验证密码)

Git配置公私钥对是为了进行安全的远程代码交互,主要用于通过SSH协议进行身份验证和加密通信。

在Gitee上配置SSH公钥的目的是将您的公钥与Gitee账户关联起来,以便在使用SSH协议进行远程代码交互时进行身份验证和安全通信。要配置SSH公钥到Gitee,请先生成SSH密钥对(公钥和私钥),然后将公钥添加到Gitee账户的SSH密钥设置中。这样就能够通过SSH协议与Gitee仓库进行安全的代码交互。

参考网址:SSH 公钥设置 | Gitee 产品文档

打开Git Bash窗口:

1.生成SSH公钥:

ssh-keygen -t rsa	(不断回车:如果公钥存在,则自动覆盖)
会默认用户目录 .ssh 目录生成一个默认的id_rsa文件 和id_rsa.pub

2.Gitee SSH密钥配置

2.1 获取公钥:cat ~/.ssh/id_rsa.pub

2.2

2.3 验证配置是否成功
ssh -T git@gitee.com

4)操作远程仓库

把本地代码推送到远程仓库

1.添加远程仓库
4.1 添加远程仓库	(先初始化本地仓库git init,然后与已创建的远程仓库进行对接)
git remote add <远程名称> <仓库地址>
远程名称:默认是origin,取决于远程服务器设置
仓库地址:从远程服务器获取此地址URL

4.2 查看远程仓库
git remote
2.推送到远程仓库
4.3 推送远程仓库
git push [-f] [--set-upstream] [远程名称][:远程分支名]
**如果远程分支和本地分支名称相同,则可以只写本地分支==git push origin master:master
git push origin master
**-f表示强制覆盖(谨慎使用)
**--set-upstream 推送到远端的同时并且建立起和远端分支的关联关系
git push --set-upstream origin master--如果当分支已经和远端分支关联,则可以省略分支名和远端名git push 将master分支推送到已关联的远端分支。

4.4 本地分支与远程分支的关联关系(--set-upstream:可建立关联)
git branch -vv
3.从远程仓库克隆
4.5 如果已经有一个远端仓库,我们可以直接clone到本地
git clone <远程仓库路径> [本地目录]	(本地目录可以省略,会自动生成一个目录)
4.从远程仓库中抓取和拉取

远程分支和本地的分支一样,我们可以进行merge操作,只需先把远端仓库里的更新都下载到本地,再进行操作

4.6 抓取
git fetch [remote name] [branch name]
抓取指令就是将仓库里的更新都抓取到本地,不会合并
如果指定远端名称和分支名,则抓取所有分支4.7 拉取
git pull [remote name][branch name]
拉取指令就是将远程仓库的修改拉到本地并自动进行合并,等同于fetch+merge
如果不指定远端名称和分支名,则抓取所有并更新当前分支
5)解决合并冲突

在一段时间,A、B用户修改了同一个文件,且修改了同一行位置的代码,此时会发生合并冲突。

A先修改推送,B晚于A,故需先拉取远程仓库的提交,经过合并后才能推送到远端分支。

相关文章:

Git 内容学习

一、Git 的理解 Git是一个分布式版本控制系统&#xff08;Distributed Version Control System&#xff0c;简称 DVCS&#xff09;&#xff0c;用于对项目源代码进行管理和跟踪变更。分为两种类型的仓库&#xff1a;本地仓库和远程仓库。 二、Git 的工作流程 详解如下&#x…...

Zookeeper3.7.1分布式安装部署

上传安装文件到linux系统上面 解压安装文件到安装目录 [zhangflink9wmwtivvjuibcd2e package]$ tar -zxvf apache-zookeeper-3.7.1-bin.tar.gz -C /opt/software/3. 修改解压文件名 [zhangflink9wmwtivvjuibcd2e software]$ mv apache-zookeeper-3.7.1-bin/ zookeeper-3.7…...

CSS必学:元素之间的空白与行内块的幽灵空白问题

作者:WangMin 格言:努力做好自己喜欢的每一件事 CSDN原创文章 博客地址 &#x1f449; WangMin 我们在开发的过程中&#xff0c;难免会出现一些难以预料的问题。那么其中&#xff0c;CSS空白现象就是非常常见的问题之一。虽然它已经被发现很久&#xff0c;但仍然有许多新手和经…...

C++类中对构造函数的重载

C类中对构造函数的重载 C 允许在同一作用域中的某个函数和运算符指定多个定义&#xff0c;分别称为函数重载和运算符重载。 重载声明是指一个与之前已经在该作用域内声明过的函数或方法具有相同名称的声明&#xff0c;但是它们的参数列表和定义&#xff08;实现&#xff09;不…...

QtC++与QLabel详解

介绍 QLabel 类是Qt中的一个用于显示文本或图像的控件类&#xff0c;通常用于用户界面中以提供静态文本或图片显示的功能。以下是对QLabel在Qt中的作用的详细解释&#xff1a; 文本和图像显示&#xff1a; QLabel 可以用来显示文本和图像。这使得它成为显示标签、标题、说明或…...

090基于web+springboot的中小企业设备管理系统

欢迎大家关注&#xff0c;一起好好学习&#xff0c;天天向上 文章目录 一项目简介技术介绍 二、功能组成三、效果图四、 文章目录 一项目简介 本中小企业设备管理系统管理员有个人中心&#xff0c;用户管理&#xff0c;员工管理&#xff0c;设备信息管理&#xff0c;配件信息管…...

input 调起键盘 ,键盘距离输入框底部太近

input 调起键盘 &#xff0c;键盘距离输入框底部太近 解决方法 cursorSpacing‘20’ 单位是 ‘px’ <input cursorSpacing20 type"text" v-model"replyMain" />距离底部距离 20px &#xff0c;输入框距离键盘距离是20px...

前端深拷贝与浅拷贝的实现

1、浅拷贝和深拷贝的定义 1.1、浅拷贝 有两种方式&#xff0c;一种是把一个对象里面的所有的属性值和方法都复制给另一个对象&#xff0c;另一种是直接把一个对象赋给另一个对象&#xff0c;使得两个都指向同一个对象。浅拷贝对内存地址的复制&#xff0c;让目标对象指针和源…...

哆啦百宝箱APP

专门为年轻人设计的APP&#xff0c;主打的免费、无恶心广告、不获取任何个人信息。 哆啦百宝箱 ● 永久免费 ● 无恶心广告 ● 种类巨多 ● 全民参与 ● 爆款功能 ● 用心创造 哆啦百宝箱 提供了从日常、图片、查询、设备、趣味、娱乐等多方面的功能&#xff0c; 操作简单&a…...

lv9 嵌入式开发 数据库sqlite

1 数据库基本概念 数据&#xff08;Data&#xff09; 能够输入计算机并能被计算机程序识别和处理的信息集合 数据库 &#xff08;Database&#xff09; 数据库是在数据库管理系统管理和控制之下&#xff0c;存放在存储介质上的数据集合 2 常用的数据库 大型数据库…...

「Verilog学习笔记」异步复位的串联T触发器

专栏前言 本专栏的内容主要是记录本人学习Verilog过程中的一些知识点&#xff0c;刷题网站用的是牛客网 分析 这道题目里我们有两个需要明确的点&#xff1a; 1. 什么是异步复位 2. 什么是串联的T触发器 关于第一个点&#xff0c;可以看我的这篇文章&#xff0c;已经整理好了&a…...

什么是51单片机,,如何写代码,并且烧录?

文章目录 1.单片机介绍2.Keil 5操作1.打开Keil 5 3 新建工程3.添加文件并写代码4.添加到group5,设置6.check7.编译8.打开头文件9 调整编辑器 4.烧录1.烧录程序2.串口查询 5.Debug1.首先编译2.调试3.查询 6 51单片机汇编指令1.格式2.符号3.寻址4.数据传送与交换指令5.交换指令6 …...

Multer 实现文件上传功能

Multer 实现文件上传功能 前言:Multer 安装和使用1、安装2、使用2-1 前端代码2-2 后端代码3、实现效果前言: post请求一般有4种数据类型: application/x-www-form-urlencodedmultipart/form-dataapplication/jsontext/xml相应后端Express会使用不同的中间件来解析不同类型的…...

Excel·VBA工作表导出为图片

《Excel转图片别再截图啦&#xff01;用这4个方法&#xff0c;高清且无损&#xff01;》&#xff0c;excel转为图片一般方法较为简单&#xff0c;那么能否使用vba将excel转为图片 选中区域导出为图片 zoom设置为2&#xff0c;导出图片较为清晰 Sub 选中区域导出为图片()Dim …...

【零基础抓包】Fiddler超详细教学(一)

​Fiddler 1、什么是 Fiddler? Fiddler 是一个 HTTP 协议调试代理工具&#xff0c;它能够记录并检查所有你的电脑和互联网之间的 HTTP 通讯。Fiddler 提供了电脑端、移动端的抓包、包括 http 协议和 https 协议都可以捕获到报文并进行分析&#xff1b;可以设置断点调试、截取…...

快速入手maven

文章目录 Maven介绍Maven安装和配置基于IDEA的Maven工程创建梳理Maven工程GAVP属性Idea构建Maven JavaSE工程Idea构建Maven JavaEE工程1. 手动创建2. 插件方式创建 Maven工程项目结构说明Maven核心功能依赖和构建管理依赖传递和冲突依赖导入失败场景和解决方案扩展构建管理和插…...

Mysql Binlog日志

Mysql Binlog是二进制格式的日志文件&#xff0c;但是不能把binlog文件等同于OS系统某目录下的具体文件&#xff0c;这是狭隘的。Binlog是用来记录Mysql内部对数据库的改动&#xff08;只记录对数据的修改操作&#xff09;&#xff0c;主要用于数据库的主从复制、数据同步以及增…...

高级深入--day45

官方站点&#xff1a;GitHub - rmax/scrapy-redis: Redis-based components for Scrapy. scrapy-redis的官方文档写的比较简洁&#xff0c;没有提及其运行原理&#xff0c;所以如果想全面的理解分布式爬虫的运行原理&#xff0c;还是得看scrapy-redis的源代码才行。 scrapy-r…...

shell_66.Linux修改或移除信号捕获

修改或移除信号捕获 要想在脚本中的不同位置进行不同的信号捕获处理&#xff0c;只需重新使用带有新选项的 trap 命令即可&#xff1a; $ cat trapmod.sh #!/bin/bash #Modifying a set trap # trap "echo Sorry...Ctrl-C is trapped." SIGINT # count1 whi…...

5 ip的分配

如上一节所述&#xff0c;需要和其他设备通信&#xff0c;那么需要先配置ip. 1、如何配置ip 1.可以使用 ifconfig&#xff0c;也可以使用 ip addr 2.设置好了以后&#xff0c;用这两个命令&#xff0c;将网卡 up 一下&#xff0c;就可以了 //---------------------------- 使…...

Amadeus的知识库 | 纯向量检索关键词识别弱?带上BM25算法搞混合检索 + Reranking做召回优化,RAG生成质量大幅增强!

一、引文在之前我们的检索环节只是使用了向量数据库提供的 ANN 算法进行纯向量检索&#xff0c;原因在于它可以通过计算查询向量和文档向量之间的余弦相似度&#xff0c;在极短时间内从整个向量数据库找到几个语义相似的局部最优解。它的强大之处在于擅长理解语义&#xff0c;但…...

JSON-java JSONML支持:XML与JSON混合格式的终极处理方案

JSON-java JSONML支持&#xff1a;XML与JSON混合格式的终极处理方案 【免费下载链接】JSON-java A reference implementation of a JSON package in Java. 项目地址: https://gitcode.com/gh_mirrors/js/JSON-java JSON-java是一个强大的Java JSON处理库&#xff0c;它提…...

用快马平台实践vibe coding:五分钟生成你的音乐心情可视化原型

今天想和大家分享一个特别有趣的小项目——用InsCode(快马)平台快速实现音乐心情可视化网页。这个项目的灵感来源于vibe coding理念&#xff0c;也就是通过编程直接表达当下的情绪和氛围。整个过程就像用代码画画一样直观&#xff0c;特别适合创意型开发者。 项目构思 我想要做…...

三星固件管理的终极跨平台解决方案:Bifrost技术深度解析与实践指南

三星固件管理的终极跨平台解决方案&#xff1a;Bifrost技术深度解析与实践指南 【免费下载链接】SamloaderKotlin 项目地址: https://gitcode.com/gh_mirrors/sa/SamloaderKotlin 对于三星设备用户和开发者而言&#xff0c;获取官方固件一直是个技术难题。传统方法要么…...

实战演练:基于快马AI打造Ubuntu OpenClaw颜色分拣机器人应用

实战演练&#xff1a;基于快马AI打造Ubuntu OpenClaw颜色分拣机器人应用 最近在研究机器人抓取和分拣的应用场景&#xff0c;正好用InsCode(快马)平台尝试了一个OpenClaw颜色分拣机器人的项目。整个过程比我预想的要顺利很多&#xff0c;特别是平台提供的AI辅助功能&#xff0…...

手把手复现金蝶云星空V8.1文件上传漏洞(附POC与修复建议)

金蝶云星空V8.1文件上传漏洞深度解析与实战指南 在企业数字化转型浪潮中&#xff0c;云ERP系统的安全性日益成为关注焦点。近期曝光的金蝶云星空V8.1版本文件上传漏洞&#xff0c;因其无需认证即可利用的特性&#xff0c;被业界评为高危风险。本文将带您从技术原理到实战复现&…...

告别CAN-TP通信超时!手把手教你用PCAN-Explorer 6和Vector上位机调优N_As/N_Bs/N_Cs参数

告别CAN-TP通信超时&#xff01;手把手教你用PCAN-Explorer 6和Vector上位机调优N_As/N_Bs/N_Cs参数 在汽车电子诊断和ECU刷写领域&#xff0c;CAN-TP&#xff08;CAN Transport Protocol&#xff09;通信的稳定性直接影响到开发效率和系统可靠性。作为一名长期奋战在车载网络测…...

告别模糊字体!3分钟掌握浏览器字体渲染优化神器

告别模糊字体&#xff01;3分钟掌握浏览器字体渲染优化神器 【免费下载链接】GreasyFork-Scripts The open source code of this project is used for userscripts (油猴脚本) for desktop browsers, including Font Rendering (Customized) (字体渲染&#xff08;自用脚本&…...

保姆级教程:在Ubuntu 20.04上从零搭建宇树Go1机器狗的ROS仿真环境(含Gazebo避坑)

从零构建宇树Go1机器狗的ROS仿真环境&#xff1a;Ubuntu 20.04全流程指南 当四足机器人从实验室走向消费市场&#xff0c;宇树科技的Go1凭借其灵活动作和开源生态迅速成为开发者新宠。但第一次打开Gazebo看到机器狗瘫倒在地时&#xff0c;多数新手都会陷入手足无措的境地——依…...

【Hot 100 刷题计划】 LeetCode 55. 跳跃游戏 | C++ 贪心算法题解

LeetCode 55. 跳跃游戏 | C 贪心算法最优解题解 &#x1f4cc; 题目描述 题目级别&#xff1a;中等 给你一个非负整数数组 nums &#xff0c;你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。 判断你是否能够到达最后一个下标&#xff0c;如…...