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

Git仓库简介

1、工作区、暂存区、仓库

在这里插入图片描述

工作区:电脑里能看到的目录。

暂存区:工作区有一个隐藏目录.git,是Git的版本库,Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD。

仓库:远程服务器中的项目。

2、git版本控制

git版本控制一般有两个命令 reset 和 revert。reset 代表将当前节点“销毁”(回退,节点还存在),就像不存在一样;revert 代表创建一个新的节点,其中记录我要删除当前节点。其中reset 中有 三个参数需要注意:

--mixed 默认参数,重置暂存区的文件与上一次的提交(commit)保持一致,工作区文件内容保持不变。--soft 回退到某个版本。--hard 撤销工作区中所有未提交的修改内容,将暂存区与工作区都回到上一次版本,并删除之前的所有信息提交。

执行 git reset HEAD
在这里插入图片描述

执行 git revert HEAD
在这里插入图片描述

撤销修改:

对文件做了修改,现在需要撤销修改:

git restore <文件名>或者git checkout -- 文件名

如果文件已经add,但还没commit,可以使用以下命令,撤销add,恢复到上一步状态:

"git restore --staged <file>或者git reset HEAD 文件名

如果已经commit,需要删除文件,

1、被提交到仓库的某个文件需要删除,可以使用 git rm 命令:
git rm <file>
git commit -m ""2、如果只想从暂存区删除文件,本地工作区不做出改变,可以:
git rm --cached <file>

3、分支管理

3.1 创建/删除分支

一般 master 分支用于发布版本,开发都是其他他分支上进行,也会存在一些 bugFix 分支,feature 分支用于开发未来的功能。创建分支有以下三种命令:

git branch 分支名git checkout -b 分支名git switch -c 分支名

删除分支

git branch -d 分支名

3.2 分支管理策略

分支管理一般基于三个命令进行,分别未 merge、rebase、cherry-pick

3.2.1 merge

merge的合并方式默认是 fast-forward,即将master 指针直接指向当前节点。例如我们创建 readme.txt 文件,并且add 和 commit,此时创建分支 dev , 此时git 的 graph 如下;

git switch -c dev

在这里插入图片描述
我们对readme.txt 文件做修改,并切换到 master 分支,使用 git merge dev 命令,git 的graph 如下:
在这里插入图片描述

可以看到 git 并没有创建新的节点,而是将 master 指针快速移动到了dev分支,如果要保存开发记录,我们可以显示禁用掉 fas-forward 模式 ,即在merge 后加上参数 --no-ff

git merge --no-ff -m "说明文字" 分支名

此时,git的graph如下,可以看到,git创建了一个新的节点,继承了dev分支。
在这里插入图片描述

3.2.2 rebase

rebase比较有意思,翻译成中文名叫”变基“,我个人把他理解成剪切,就像 ctrl + x 一样,将当前分支黏贴到目标分支。这是原始的 graph。
在这里插入图片描述

我们使用以下命令:

git switch Featuregit rebase master

此时,git 的 graph 变为下面模样
在这里插入图片描述

可以,看到feature分支接到了master后面。需要注意的是,rebase 提供了 -i 参数,是”剪切”变得更加灵活,可以自己尝试一下。那么 rebase 和 merge 的区别在哪里?

假如master和feature开发了不同的功能,即两个分支没有文件冲突,和3.2.1的情况不一样(dev分支继承在master分支),此时我们执行命令:

git switch mastergit merge feature

此时,git的 graph 如下所示:
在这里插入图片描述

3.2.3 cherry-pick

这个命令就比较简单了,他就相当于复制节点到当前分支。

需要注意的是我们在合并前都需要git commit 将暂存区的内容提交到分支中。

4、标签

分支可以移动,当一个节点打上标签后这个标签就在这个节点上,不会移动。那么我们只需要记住一些命令就好了:

#创建标签
git tag 标签名 commit_id#指定标签信息
git tag -a <tagname> -m "blablabla..."#删除标签
git tag -d 标签名#推送某个标签到远程
git push origin xxxx#删除远程标签,需要首先删除本地标签
git tag -d 标签名
git push origin :refs/tags/标签名

5、push、pull、fetch

如果要与远程仓库交互,就需要用到这三个命令,其中 pull 是 fetch 和 merge 的结合。

5.1 fetch

fetch 是从远程仓库抓取 origin/master 节点,

git fetch origin/[branch]

5.2 pull

git pull <远程主机名> <远程分支名>:<本地分支名>

5.3 push

将本地仓库推送到远程仓库,

git push <远程主机名> <本地分支名>:<远程分支名>

如果本地分支名与远程分支名相同,则可以省略冒号:

git push <远程主机名> <本地分支名>

删除远程仓库分支

git push origin --delete mastergit push origin :分支名

6、其他命令

  • git status 查看状态
  • git diff 查看文件改动
  • git log
  • git stash(暂存当前工作区)
  • 相对引用,git checkout master^2(切换父节点)

追踪远程分支:

git checkout -b 本地分支 远程分支git branch -u 远程分支  本地分支

7、git log

显示分支图

git log --graph --pretty=oneline --abbrev-commit

8、关闭远程链接

git remote remove origin

相关文章:

Git仓库简介

1、工作区、暂存区、仓库 工作区&#xff1a;电脑里能看到的目录。 暂存区&#xff1a;工作区有一个隐藏目录.git&#xff0c;是Git的版本库&#xff0c;Git的版本库里存了很多东西&#xff0c;其中最重要的就是称为stage&#xff08;或者叫index&#xff09;的暂存区&#xf…...

TensorRTC++ | INT8量化

Int8量化步骤 // 这是基本需要的组件 auto builder = make_nvshared(nvinfer1::createInferBuilder(logger)); auto config = make_nvshared(builder->createBuilderConfig())...

VS + qt环境使用QCustomPlot等三方库如何配置

文章目录 前言VS环境下引入第三方类库QCustomPlot方法一&#xff1a;解决办法&#xff1a; C中.dll与.lib文件的生成与使用1. 两种库&#xff1a;2.两种文件的区别 前言 Qt提供了显式和隐式导入第三方库方法&#xff0c;本文只介绍显示导入方法。 一般的第三方提供的库文件包…...

OS 段页结合的实际内存管理

虚拟内存承接段和页&#xff0c;从用户角度&#xff0c;虚拟内存提供段&#xff0c;从硬件角度&#xff0c;虚拟内存把段打散映射到页 先基于段的翻译&#xff0c;再基于页的翻译 p是pcb跟着进程换&#xff0c;64M一个段&#xff0c;set base就是建段表 因为每个进程虚拟地址…...

一种改进多旋翼无人机动态仿真的模块化仿真环境研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…...

02-请解释一下Java的内存模型和happens-before规则?【Java面试题总结】

请解释一下Java的内存模型和happens-before规则&#xff1f; 概念&#xff1a;Java内存模型&#xff0c;简称JMM&#xff0c;是一种定义了多线程程序中内存访问行为的规范。它定义了线程如何与主内存和工作内存进行交互&#xff0c;以及如何保证多线程程序的正确性和可见性。J…...

PVE 8 出现CPU 100% 冻结(卡死)

最近在研究PVE&#xff0c;然后下载官方最新版本系统8.x安装好后出现卡死问题&#xff0c;就连开个软件CPU也能飙到100%&#xff0c;开始我以为是硬件问题可能是资源不够&#xff0c;但是将系统切换回裸机&#xff08;不用PVE启动&#xff09;一点问题也没有&#xff0c;后来逐…...

【高效编程技巧】编程菜鸟和编程大佬的差距究竟在哪里?

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏: 《高效编程技巧》《C语言进阶》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 文章目录 &#x1f4cb; 前言1.如何写出好的代码&#xff1f;1.2 如何分析一个函数写的怎么样 2. 代码板式的重要性2.1 代码…...

继承【C++】

文章目录 继承的概念继承的定义继承方式和访问限定符继承基类成员访问方式的变化 默认继承方式 基类和派生类对象赋值转换继承中的作用域派生类的默认成员函数继承与友元静态成员菱形继承及菱形虚拟继承继承的方式 菱形虚拟继承菱形虚拟继承原理 继承的概念 继承(inheritance)…...

ORB-SLAM3复现过程中遇到的问题及解决办法

在复现过程中遇到的问题的解决过程 1. 版本检查1.1 Opencv版本的检测1.2 Eigen版本的检测1.3 查看Python版本1.4 其他 2. 编译过程中遇到的问题及解决办法2.1 ./build.sh遇到的问题2.2 ./build_ros.sh遇到的问题 因为环境比较干净&#xff0c;所以遇到的问题相对少一些&#xf…...

vue开发桌面exe应用

vue开发桌面exe应用 Electron-vue 参考 Electron-vue搭建vue全家桶Element UI客户端&#xff08;一&#xff09; 如何使用Vue.js构建桌面应用程序...

C# 实现PictureBox从随机选择的文件夹内对图像进行随机播放

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System...

腾讯云国际代充-GPU服务器安装驱动教程NVIDIA Tesla

腾讯云国际站GPU 云服务器是基于 GPU 的快速、稳定、弹性的计算服务&#xff0c;主要应用于深度学习训练/推理、图形图像处理以及科学计算等场景。 GPU 云服务器提供和标准腾讯云国际 CVM 云服务器一致的方便快捷的管理方式。 GPU 云服务器通过其强大的快速处理海量数据的计算性…...

【python爬虫】9.带着小饼干登录(cookies)

文章目录 前言项目&#xff1a;发表博客评论post请求 cookies及其用法session及其用法存储cookies读取cookies复习 前言 第1-8关我们学习的是爬虫最为基础的知识&#xff0c;从第9关开始&#xff0c;我们正式打开爬虫的进阶之门&#xff0c;学习爬虫更多的精进知识。 在前面几…...

原神剑冢三层封印怎么解开 原神剑冢三层封印在哪里打

在原神游戏中原神探索剑冢封印并解开三层封印&#xff0c;玩家可以去蒙德城接取一个隐藏任务&#xff0c;这项任务需要玩家去解开剑冢三层封印&#xff0c;才能完成任务。然而&#xff0c;许多玩家可能还不知道如何解开这个封印&#xff0c;今天小编为大家整理了一份详细的攻略…...

Papers with Semi-supervised Learning for Medical Image Segmentation(SSL4MIS)

Papers_with_SSL4MIS CVPR2023 DateCategory标题TitleCodeBlog2023-06半监督医学图像分割用于半监督医学图像分割的伪标签引导对比学习Pseudo-Label Guided Contrastive Learning for Semi-Supervised Medical Image SegmentationLinkLink2023-06半监督图像分割SemiCVT&#…...

c#继承(new base)的使用

概述 C#中的继承是面向对象编程的重要概念之一&#xff0c;它允许一个类&#xff08;称为子类或派生类&#xff09;从另一个类&#xff08;称为父类或基类&#xff09;继承属性和行为。 继承的主要目的是实现代码重用和层次化的组织。子类可以继承父类的字段、属性、方法和事…...

【办公自动化】使用Python批量处理Excel文件并转为csv文件

&#x1f935;‍♂️ 个人主页&#xff1a;艾派森的个人主页 ✍&#x1f3fb;作者简介&#xff1a;Python学习者 &#x1f40b; 希望大家多多支持&#xff0c;我们一起进步&#xff01;&#x1f604; 如果文章对你有帮助的话&#xff0c; 欢迎评论 &#x1f4ac;点赞&#x1f4…...

手机怎么剪视频?分享一些剪辑工具和注意事项

视频剪辑是一种将多个视频片段进行剪切、合并和编辑的技术&#xff0c;它可以帮助我们制作出精彩的视频作品。如今&#xff0c;随着智能手机的普及&#xff0c;我们可以随时随地使用手机进行视频剪辑。本文将为大家介绍一些手机剪辑工具和注意事项&#xff0c;帮助大家更好地进…...

面试题汇总

文章目录 一. 腾讯二. 华为三. 快手1. Long 的长度和范围&#xff0c;为什么要减 1 (Java基础)2. 线程池配置无界队列了之后&#xff0c;拒绝策略怎么搞&#xff0c;什么时候用到无界队列 (JUC并发) 四. 美团五. 阿里六. 百度七. 字节八. 大疆1. 为什么创建进程开销比线程大? …...

4象限解析OpenRocket:开源火箭仿真工具的技术突破与实践指南

4象限解析OpenRocket&#xff1a;开源火箭仿真工具的技术突破与实践指南 【免费下载链接】openrocket Model-rocketry aerodynamics and trajectory simulation software 项目地址: https://gitcode.com/GitHub_Trending/op/openrocket 在模型火箭设计领域&#xff0c;物…...

【回归儿童本位,重构专业底色】学前教育行业的深度思辨与价值坚守(二)

吕坤阳亲笔二、行业高质量发展的核心&#xff1a;回归儿童&#xff0c;摒弃功利化教育随着学前教育普惠政策的推进&#xff0c;行业规范化程度不断提升&#xff0c;但功利化、形式化的教育倾向依然存在&#xff0c;成为高质量发展的阻碍。部分幼儿园为迎合家长“抢跑”需求&…...

基于WebRTC的P2P文件传输系统:架构设计与实现原理

基于WebRTC的P2P文件传输系统&#xff1a;架构设计与实现原理 【免费下载链接】filepizza :pizza: Peer-to-peer file transfers in your browser 项目地址: https://gitcode.com/GitHub_Trending/fi/filepizza 在当今数字时代&#xff0c;文件传输已成为日常工作和协作…...

React+GSAP实战:5种酷炫滚动动画效果完整代码分享(含ScrollTrigger配置)

ReactGSAP实战&#xff1a;5种酷炫滚动动画效果完整代码分享&#xff08;含ScrollTrigger配置&#xff09; 在现代Web开发中&#xff0c;流畅的滚动动画已经成为提升用户体验的关键因素。作为前端开发者&#xff0c;我们经常需要实现各种吸引眼球的滚动效果&#xff0c;从简单的…...

Optick多线程性能分析:游戏引擎中的并发性能优化实战

Optick多线程性能分析&#xff1a;游戏引擎中的并发性能优化实战 【免费下载链接】optick C Profiler For Games 项目地址: https://gitcode.com/gh_mirrors/op/optick Optick是一款专为游戏开发打造的C性能分析工具&#xff0c;能够精准捕捉多线程应用中的性能瓶颈&…...

LeetCode 11. Container With Most Water 题解

LeetCode 11. Container With Most Water 题解 题目描述 给你 n 个非负整数 a1&#xff0c;a2&#xff0c;...&#xff0c;an&#xff0c;每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线&#xff0c;垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0) 。找出其中的两条…...

Godep历史意义揭秘:Go依赖管理工具的开创者如何改变开发方式

Godep历史意义揭秘&#xff1a;Go依赖管理工具的开创者如何改变开发方式 【免费下载链接】godep dependency tool for go 项目地址: https://gitcode.com/gh_mirrors/go/godep Godep作为Go语言依赖管理工具的开创者&#xff0c;在Go生态系统的演进历程中扮演了至关重要的…...

eNSP安装避坑指南:WinPcap/Wireshark/VirtualBox依赖关系解析

eNSP安装避坑指南&#xff1a;WinPcap/Wireshark/VirtualBox依赖关系解析 当你第一次打开eNSP安装包时&#xff0c;可能会疑惑为什么需要同时安装WinPcap、Wireshark和VirtualBox这三个看似不相关的软件。这就像组装一台精密仪器——少了任何一个螺丝&#xff0c;整台机器都无法…...

DLSS Swapper智能工具:游戏性能优化与版本管理完全指南

DLSS Swapper智能工具&#xff1a;游戏性能优化与版本管理完全指南 【免费下载链接】dlss-swapper 项目地址: https://gitcode.com/GitHub_Trending/dl/dlss-swapper DLSS Swapper是一款专为游戏玩家设计的深度学习超级采样(DLSS)版本管理工具&#xff0c;能够自动扫描…...

金仓数据库KingbaseES KSQL命令行工具实战指南:从基础操作到高级调优

1. KSQL命令行工具入门指南 第一次接触金仓数据库的KSQL命令行工具时&#xff0c;我完全被它强大的功能震撼到了。作为DBA日常运维的瑞士军刀&#xff0c;KSQL不仅能完成基本的数据库操作&#xff0c;还能进行深度性能分析和调优。记得刚开始使用时&#xff0c;我还在纠结要不要…...