Git简介

Git是一款版本管理软件,可以在任何时间点保存文件,也能够恢复到以前任意时间点保存的文档,Git作用简单举例来说就是,写论文,有很多个版本,将原来的论文保存起来,新建一个副本,如果写错了,可以回退到之前的版本。

git安装

下载地址: https://git-scm.com/downloads

安装过程:傻瓜式安装,安装路径可以修改,但不要有中文

安装完成后,鼠标按住shift右键,会出现两个选项,Git GUI和Git Bash,点击Git Bash Here就可以打开命令行工具:

学习git就是学习git的基本命令

Git的基本操作

配置Git用户信息

配置提交人姓名:git config --global user.name 用户名

配置提交人邮箱: git config --global user.email 邮箱地址

查看git信息:git config --list(底部会显示提交人姓名和邮箱)

git的配置文件路径:C:\Users\用户名\.gitconfig(里面可以修改git信息)

git的工作流程

工作目录-暂存区-Git仓库

工作目录:自己的项目目录

暂存区:存放临时修改的文件,暂存区的数据只有一份,后提交的会覆盖之前提交的文件

git仓库:用来保存编号的项目程序,任何一个文件任何时间都可以保存,同一个文件有多份,都有自己的版本号

Git常用命令

第一步,先创建新的项目,这是项目文件

第二步,鼠标右键打开刚才安装好的open Git Bach here,打开命令行窗口,输入git init,项目文件就会多出一个.git文件

第三步:输入命令git status,可以查看文件状态,红色代表没有被git管理

第四步:将文件添加到暂存区,git add main.cpp,也可以批量添加,git add . 可以将所有文件添加到暂存区,这里需要注意我们不希望将.user文件也上传到git,所以需要在项目目录文件下创建一个文本文档.gitignore,也叫忽略清单在文本内输入*.user,即可,此时再次查看,就不会出现user文件名

输入git add .,这时候看到文件名变绿,new file代表文件已经增加到暂存区

最后一步,将文件上传提交到git仓库,命令是 git commit -m 日志

可以使用git log命令查看日志

修改文件后再次提交

在文件中添加一个按钮,然后再次使用git status查看,发现widget.cpp变红

所以需要再次上传到暂存区,查看状态,再上传到仓库,查看日志。

文件恢复

暂存区--->项目目录

使用暂存区的文件,覆盖当前项目中的文件,当在暂存区进行了一次提交后,之后继续写代码,如果发现写错了,需要恢复成暂存区时的代码

命令:git checkout

我们先将项目中的内容加个注释,然后传到暂存区

使用git add widget将当前版本上传到暂存区,使用git status查看状态,发现还没有被git管理

然后输入git checkout widget.cpp

此时Qt编辑器内会提示文件被修改过了,点击yes to all即可恢复到之前没有注释时的版本

点击后,此时的注释已经消失了,文件恢复到了之前的状态

git仓库----->项目目录(版本穿越)

上面提到的git log可以查看已有版本和版本id号,使用git reset --hard id可以从仓库恢复文件,仓库恢复文件会同时覆盖掉暂存区和项目目录的文件,同时,git log只能看到恢复到的版本号,之后的版本号无法看到

1 先使用 git log看一下之前提交的版本

2 要穿越到哪个版本就复制哪个版本号,此时我们恢复到最初的基础文件,使用git log查看,发现无法查看到之后的版本号了

如果需要穿越到其他版本,无法在命令行找到版本号,可以到文件内查看,之前目录生成的git文件内有一个logs文件夹,里面有一个HEAD文件,打开就可以看到所以的版本号

此时点击yes to all,就恢复到了最开始的状态

分支

分支概念

分支就是为项目创建多个副本,每个副本完成一个独立的工作,分支能够做到多件事情同时进行且互不影响。

上图中有一个master就是主分支,这个括号内表示的就是当前在哪个分支,主分支就是系统默认使用的分支,之前的示例都是在主分支上完成的,主分支会最终保存整个项目的完整代码,所以,开发分支的工作完成后,需要合并回到主分支。

开发分支:即为了完成猴哥功能模块开发而单独建立的副本,开发分支是基于主分支创建的,当然一个开发分支下,还能创建多个开发分支,形参父-子-孙结构

默认分支是在主分支上

分支命令

查看分支,git branch

创建分支:git branch 分支名,再使用git branch查看,发现多出一个users分支

切换分支,git checkout 分支名,会发现括号内变成了users

需要注意的是,当切换分支时,需要把暂存区的文件提交,否则会跟着切换到这条分支上,当再回到主分支,就看不到其他分支里面的文件了。

举例

在项目创建一个新的Users类

通过git status查看

将Users模块提交到users分支。

此时切换到主分支后,查看清空,git checkout master,会弹出这个框

点击close all后,会发现文件中没有user模块,同样再切回到Users分支后又会重新显示出来

合并分支

使用git merge 分支名即可合并分支,需要注意的是,合并分支需要再master主分支上

合并后在master分支下也可以看到User

删除分支

合并后即可删除分支 使用 git branch -d 分支名,此时如果没有合并则不允许删除,使用D可以强制删除分支,再次使用branch命令查看,发现子分支已经被删除了

临时存储分支

当某个分支在开发时,如果这个分支没有提交到仓库,是不允许进行分支切换的,此时可以进行临时存储。

将所有改动临时存储:git stash

将临时存储恢复 :git stash pop

在其他的分支中也能执行恢复改动,但是会把这些文件恢复到当前命令的分支,所以我们在恢复的时候需要注意,我们当时在哪个分支进行的开发

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

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

相关文章

Kafka 性能调优指南

文章目录 概述操作系统层面调优文件系统优化内存管理磁盘 I/O 优化 JVM 调优堆内存设置GC 收集器选择常见 GC 问题 Broker 端调优版本兼容性关键参数配置日志段大小调优设置原则推荐配置调优考虑因素监控命令 应用层调优客户端复用资源管理多线程消费模式 性能指标调优吞吐量优…

佰力博科技与您探讨低温真空探针台如何保养

低温真空探针台是一种用于在低温或真空环境下进行电学性能测试的精密仪器,其保养和维护对于确保设备的稳定运行和延长使用寿命至关重要。 一、日常清洁与检查 1、使用后应立即清洁探针台,尤其是探针、接口和连接器,避免灰尘和杂质影响精度。…

MySQL:深入总结锁机制

写在前面 在 MySQL 数据库中,锁机制是保障并发控制和数据一致性的关键。合理运用锁机制,能有效避免数据竞争,提升数据库性能。接下来,我们就深入了解 MySQL 中的各类锁。 博主总结(注:针对总结的详解补充在…

AI+OT安全,让威胁情报实现主动防御

当前,网络犯罪组织的运作模式正日趋“企业化”,给全球网络安全带来了严峻挑战。企业以及各类组织机构有必要采用威胁情报驱动的防御体系(Threat-Informed Defense, TID),将安全运营模式从被动响应彻底转向基于威胁情报…

深度剖析:UDS上下行分离隧道如何绕过主流防火墙?

🔥 深度剖析:UDS上下行分离隧道如何绕过主流防火墙? 📊 系统架构图 #mermaid-svg-lv5FKIvBMKPeTFuW {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-lv5FKIvBMKPeTFuW …

Vue 使用vue-cli

Vue 渐进式JavaScript 框架 基于Vue2的学习笔记 - 使用Vue-cli 笔记 目录 使用vue-cli 创建项目 配置文件 启动项目 入口文件 Index.html Main.js Eslint修复 第一种 第二种 第三种 更换为淘宝源 查看当前配置 配置淘宝源 验证配置 总结 使用vue-cli 创建项目…

Sentinel实现原理

Sentinel 是阿里巴巴开源的分布式系统流量控制组件,主要用于服务保护,涵盖流量控制、熔断降级、系统负载保护等功能。 以下是 Sentinel 的实现原理,使用中文简要说明: 1. 总体架构 Sentinel 采用 轻量级 设计,分为 核…

DeepSeek生成HTML5生命天数计算器

DeepSeek生成HTML5生命天数计算器 让DeepSeek生成一个生命天数计算器 提示词prompt 帮我做一个我活了多少天的网页 用户输入出生日期即可显示我活了多少天 页面ui要好看点,加上显示官方统计 人一生平均可以活多少天 自动计算剩余天数。帮我按照上述需求再次生成一个…

如何使typora图片不居中留白?

如何使typora图片不居中留白? 驻波使用typora记笔记的时候,好几次插入图片太大选择缩小都会发现图片仍然滞留在中间,居中显示,但我本人觉得并不好看,所以我决定改一下,于是有了这篇博客 检查看原理 软件内…

高精度频率基石:超低相噪恒温晶振的全场景应用解决方案

在科技高速发展的今天,频率源作为电子系统的 “心脏”,其稳定性与可靠性直接决定着通信、导航、测量等关键领域的性能上限。深度洞察行业需求,重磅推出SYN3627L 型 100MHz 恒温晶振(OCXO)。这款集高稳定性、低相位噪声…

【android bluetooth 协议分析 01】【HCI 层介绍 27】【LeReadRemoteFeatures命令介绍】

深入理解 LE Read Remote Features 命令与事件响应 在蓝牙低功耗(BLE)通信中,设备特性(LE Features)协商是连接过程中的一个关键环节。本文将详细介绍 HCI 层的命令 LE_Read_Remote_Features 及其对应的事件响应 LE_R…

企业架构设计中的CBAM方法深度解析:成本效益驱动的架构决策艺术

目录 CBAM方法概述与核心价值 CBAM核心流程与实施步骤 前期准备与场景确定 成本效益建模与分析 风险调整与决策制定 实施技巧与挑战克服 CBAM实战案例与应用场景 案例一:电商平台促销系统架构选型 案例二:制造业ERP系统云迁移决策 案例三&…

为什么你的vue项目连接不到后端

当你新创建一个vue项目时,你很有可能忘记配置了后端的地址这个时候可以加上这样的配置在 vite.config.js import { fileURLToPath, URL } from node:urlimport { defineConfig } from vite import vue from vitejs/plugin-vue import vueDevTools from vite-plugi…

Metasploit常用命令详解

一、Metasploit 概述 Metasploit是一款开源的渗透测试框架,由 H.D. Moore 于 2003 年首次发布,目前由 rapid7 公司维护。它整合了大量漏洞利用模块、后渗透工具和漏洞扫描功能,已成为网络安全工程师、红队 / 蓝队成员及安全研究人员的核心工…

数据库AICD特性之--一致性 Consistency

数据库AICD特性之–原子性 Atomicity 数据库AICD特性之–隔离性 Isolation 数据库 ACID 特性之 – 持久性 Durability 数据库AICD特性之–一致性 Consistency 一致性指数据库在事务执行前后,数据始终符合预设的完整性约束和业务规则。事务执行前数据是合法的&…

OpenCV在图像上绘制文字示例

OpenCV计算机视觉开发实践:基于Qt C - 商品搜索 - 京东 OpenCV中除了提供绘制各种图形的函数外,还提供了一个特殊的绘制函数,用于在图像上绘制文字。这个函数是putText(),它是命名空间cv中的函数,其声明如下&#xff…

synchronized的技巧与要点

一、基本概念 目的:解决多线程并发访问共享资源时的数据竞争问题,保证原子性、可见性和有序性(JMM内存模型)。性质:可重入锁(同一线程可重复获取同一把锁)、独占锁(互斥锁&#xff…

特殊混淆案例还原指南:突破变形控制流与量子加密的技术解析

引言​​ 在JavaScript混淆领域,传统的字符串加密和控制流平坦化已无法满足高端防护需求。2023年Snyk安全报告指出,Top级商业产品已转向​​多态变形控制流​​和​​量子加密技术​​,这类混淆方案占比17%,但导致的反向工程失败率高达94%。本文将通过三个工业级混淆案例(…

基于Python、tkinter、sqlite3 和matplotlib的校园书店管理系统

写一个小例子练习一下python语言。一个基于Python的校园书店管理系统,使用了tkinter库构建图形用户界面(GUI),sqlite3 进行数据库管理,matplotlib用于统计分析可视化。系统支持用户登录、书籍管理、客户管理、员工管理…

机器学习×第十四卷:集成学习中篇——她从每次错误中修正自己

🎀【开场 她终于愿意回看自己贴错的地方了】 🦊狐狐:“她贴过你很多次,但每次贴歪了,都只是低头沉默。” 🐾猫猫:“现在不一样了喵……她开始反思,是不是哪一刻该绕过来贴你背后&…