git常见使用

news2024/9/20 18:32:06

1. 概念

  • 分布式,有远程仓库和本地仓库的概念,因此要注意同步问题
  • git是面向对象的,本质是内容寻址系统。.git目录下有个文件夹objects,存储git库中的对象,git就是根据object建立一种树形结构,将文件和通过hash的方式关联起来

2. 工作区 暂存区 本地仓库 远程仓库

关系图如下:
在这里插入图片描述

  • workspace:工作区,平时写代码的地方
  • index:暂存区,让写完后的代码变成待提交状态
  • repository:本地仓库,提交暂存区的代码,记录进入代码本地管理
  • remote:远程仓库,将本地仓库修改好的代码提交到远程,可供远程协作的人下载

当创建一个git项目,git会在根目录创建一个git目录,需要重点理解的是以下五个:

  • HEAD:是指针的指针,用来标记当前的提交
    • 新建一个分支的时候其实仅仅是改变了HEAD的指向,这也是git分支比较轻量的原因
  • hooks:用来在git操作前后进行一些操作
  • index:本地的暂存区
  • objects是上面所提到的内容
  • refs:分支的引用

简单来说,repository由git维护的三棵“树”组成:

  • workspace:持有实际文件
  • index:像个缓存区域,临时保存你的改动
  • HEAD:指向最后一次提交的结果

3. 提交代码

开始git操作本地必须有一份代码和remote相连,要么从remote拉取(适用于代码存在remote的情况),要么自己上传本地代码连接remote(适用于repository初次上传到remote的情况)

  • git clone <url>:克隆remote的版本到本地,成功后本地就有了一样的代码,并且也已经与remote连接成功

上传本地代码并连接remote操作大致如下:

1. 在项目的根目录打开Git Bash Here
2. 执行以下步骤:
    git init
    git add .
    git commit -m "first commit"
    git remote add origin 远程仓库地址
    git push -u origin master

修改代码后将其提交到index:

  • git add .:添加当前目录所有文件到index
  • 提交后没有任何提示,可以用git status查看文件是否有修改,是否进入index,已经提交到repository的不会展示

将index里文件提交到repository,这是个离线操作:

  • git commit -m "message":将index里文件提交到repository,message的位置填写本次提交修改的内容和一些注释

将repository提交到remote:

  • git push <remote> <branch><remote>位置填写remote名称,<branch>填写需要提交的分支
    • git push origin master:推送到远程origin仓库的master分支

4. 关于协作

拉取remote代码到repository:

  • git pull <remote> <branch><remote>写remote名称,<branch>写拉取remote的分支
    • git pull origin master:拉取远程origin仓库的master分支到repository
  • 将代码提交到remote之前,最好先拉取一下远程的最新代码,以免产生冲突

4.1 分支

在合作中有可能会有并行开发的需求,但可能不会同时上线,不能把没有开发完成的分支上线,所以就出现了分支branch

分支的功能:从同一份稳定代码拉出有相同代码的分支,每个人在自己的分支上开发提交代码,不会互相打扰,完成后再进行代码的合并

  • master是默认的分支,在其他分支上进行开发,完成后再将它们合并到主分支上
  • 除非将分支推送到远程仓库,不然该分支是不为别人所见的

举个例子实践一下:

  • git checkout -b dev:创建并切换到dev分支
    • 加上-b参数表示创建并切换
    • git branch dev + git checkout dev
  • git branch:查看所有本地分支,当前分支前面会标一个*号
  • git branch -d dev:删除dev分支

4.2 合并分支

合并之前确保要合并的两个分支都是当前分支的最新代码(pull一下),再切换到要保存合并代码的分支

  • git merge <branch>:合并指定分支到当前分支
  • git log --graph:查看分支合并图
  • 合并后可能出现冲突,需要修改文件手动合并这些冲突
  • git add <filename>:来标记合并成功

常见冲突管理:

  • git merge --abort:撤销合并操作,回到开始合并之前的状态
  • 当解决完冲突后,在合并完成后发现一个错误,git reset --hard就可以回滚到那个合并之前的状态

git常见命令速查表:
在这里插入图片描述

5. 常见场景及解决方案

5.1 stash

场景:正在feature分支下开发新需求,但是线上突然出现bug要马上修复,需要切到master分支

只需要git stash就可以把代码存起来,修复完线上问题后切回feature分支,用git stash apply就可恢复代码

一些相关命令:

# 保存当前未commit的代码
git stash

# 保存当前未commit的代码并添加备注
git stash save "备注的内容"

# 列出stash的所有记录
git stash list

# 删除stash的所有记录
git stash clear

# 应用最近一次的stash
git stash apply

# 应用最近一次的stash,随后删除该记录
git stash pop

# 删除最近的一次stash
git stash drop

5.2 reset –soft

应用场景:有的时候不小心把不该提交的内容commit了,想改回来就只能再commit一次,但就多了一条“黑历史”

只需要`git reset --soft HEAD^,相当于后悔药,可以再次修改重新提交,保持干净的commit记录,这说的是未push的commit。

对于已经push的commit也可以使用该命令,不过再次push时,由于远程分支和本地分支有差异,需要强制推送git push -f来覆盖被reset的commit

PS:在reset --soft指定commit时,会将该commit到最近一次commit的所有修改内容全部恢复,而不是只针对该commit

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据库应用:Linux 部署 GaussDB

目录 一、实验 1.环境 2.Linux 部署 GaussDB 3.Linux 使用 GaussDB 4.使用 GaussDB 进行表与索引操作 5.使用 GaussDB 进行视图操作 6.使用 GaussDB 进行联表查询 7.使用 GaussDB 进行外键关联 二、问题 1.运行python脚本报错 2. 安装GaussDB 报错 3. install 安装…

广州大彩科技新品发布:大彩科技COF系列2.4寸串口屏发布!

一、产品介绍 此次发布的是S系列平台2.4寸COF超薄结构串口屏&#xff0c;分辨率为240*320&#xff0c;该平台采用了Cortex-M3内核的处理器&#xff0c;内置了2Mbyte PSRAM和64Mbit FLASH&#xff0c;是专为小尺寸串口屏设计的MCU&#xff0c;精简了外围电路。 该平台默认支持大…

【sql】深入理解 mysql的EXISTS 语法

相关文章&#xff1a; 【sql】深入理解 mysql的EXISTS 语法 【sql】初识 where EXISTS 1. 使用格式如下&#xff1a; select * from a where exists ( 任何子查询 ) 代码根据颜色分成两段&#xff0c;前面的是主查询&#xff0c;后面红色的是子查询&#xff0c;先主后子&…

从政府工作报告探计算机行业发展

文章目录 每日一句正能量前言以“数”谋新、加“数”向实人工智能方面人工智能成核心驱动引擎 软件方面通信方面后记 每日一句正能量 该来的始终会来&#xff0c;千万别太着急&#xff0c;如果你失去了耐心&#xff0c;就会失去更多。该走过的路总是要走过的&#xff0c;从来不…

Android14之HIDL报错:Invalid sparse file format at header magic(一百九十六)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a;多媒…

【数据结构与算法】(17):计数排序和基数排序详解

&#x1f921;博客主页&#xff1a;Code_文晓 &#x1f970;本文专栏&#xff1a;数据结构与算法 &#x1f63b;欢迎关注&#xff1a;感谢大家的点赞评论关注&#xff0c;祝您学有所成&#xff01; ✨✨&#x1f49c;&#x1f49b;想要学习更多数据结构与算法点击专栏链接查看&…

智慧城市与数字孪生:科技融合助力城市可持续发展

随着信息技术的迅猛发展&#xff0c;智慧城市和数字孪生作为现代城市发展的重要理念和技术手段&#xff0c;正日益受到广泛关注。智慧城市通过集成应用先进的信息通信技术&#xff0c;实现城市管理、服务、运行的智能化&#xff0c;而数字孪生则是利用数字化手段对物理城市进行…

面试笔记——Redis(使用场景、面临问题、缓存穿透)

Redis的使用场景 Redis&#xff08;Remote Dictionary Server&#xff09;是一个内存数据结构存储系统&#xff0c;它以快速、高效的特性闻名&#xff0c;并且它支持多种数据结构&#xff0c;包括字符串、哈希表、列表、集合、有序集合等。它主要用于以下场景&#xff1a; 缓…

libmodbus编译为64位动态库

通用方法&#xff0c;记录一下&#xff0c;以便后续参考。 Step 1. 下载libmodbus源码 GitHub - stephane/libmodbus: A Modbus library for Linux, Mac OS, FreeBSD and Windows Step 2. 生成配置文件 进入libmodbus-master\src\win32目录&#xff0c;在该目录下打开终端&am…

【火猫TV】DOTA2 BB队员称:队伍非常具有凝聚力

1、近日BB战队队员Nightfall接受采访时表示战队自从去年获得梦幻联赛S20亚军以来&#xff0c;就非常具有凝聚力。 “我认为战队自从去年获得梦幻联赛S20亚军以来&#xff0c;战队就非常具有凝聚力。从那一刻开始&#xff0c;我们这群人不再只是几个选手组建起来的松散组织&…

移动云COCA架构实现算力跃升,探索人工智能新未来

近期&#xff0c;随着OpenAI正式发布首款文生视频模型Sora&#xff0c;标志着人工智能大模型在视频生成领域有了重大飞跃。Sora模型不仅能够生成逼真的视频内容&#xff0c;还能够模拟物理世界中的物体运动与交互&#xff0c;其核心在于其能够处理和生成具有复杂动态与空间关系…

C++的语法

可能需要用到存储各种数据类型&#xff08;比如字符型、宽字符型、整型、浮点型、双浮点型、布尔型等&#xff09; 下表显示了各种变量类型在内存中存储值时需要占用的内存&#xff0c;以及该类型的变量所能存储的最大值和最小值。 注意&#xff1a;不同系统会有所差异 #inc…

8.发布页面

发布页面 官网 https://vkuviewdoc.fsq.pub/components/form.html 复制官网中的内容 代码 write.vue <template><view class"u-wrap u-p-l-20 u-p-r-20"><u-form :model"addModel" ref"form1"><u-form-item label&quo…

出彩不停息!创维汽车SKYHOME又获国际大奖

祝贺&#xff01;创维汽车SKYHOME又获国际缪斯设计大奖&#xff01;进一步获得国际认可&#xff01; 卓越的意识、优秀的审美、无与伦比的专注&#xff0c;不仅是缪斯奖所看重的独特品质&#xff0c;也是SKYHOME设计团队在传递品牌故事中所秉持的优秀品格。作为缪斯奖青睐的设计…

干货分享 | 外贸搞钱必备!

一、谷歌搜索&#xff1a; 开发客户的神器&#xff0c;需结合搜索指令&#xff0c;常见的12大搜索指令如下&#xff1a; 1. 指令运用&#xff1a;email 说明&#xff1a;指定搜索内容&#xff0c;缩小范围&#xff0c;显示带有email的搜索结果 2.- 指令运用&#xff1a;-B2C 说…

【G. One-Dimensional Puzzle (组合数学+逆元)

解析&#xff1a; 本体是进行分类讨论这么才使全部的拼图用完&#xff0c;且可以合成多个种类。 列举其所有可以拼成的方法个数&#xff1a; 第一种&#xff1a;3 3 3 3 第二种&#xff1a; 4 4 4 4 第三种&#xff1a;1 2 1 2 第四种&#xff1a;1 3 3 2 第五种&…

新品上线 | NoV病毒抗原抗体系列,助力疫苗相关研究!

背景介绍 诺如病毒&#xff08;norovirus&#xff0c;NoV&#xff09;&#xff0c;又名诺瓦克病毒&#xff08;norwalk viruses&#xff0c;NV&#xff09;&#xff0c;是一种单链正义RNA病毒&#xff0c;引发急性胃肠炎&#xff08;AGE&#xff09;的主要原因之一。病症常伴随…

Java安全 反序列化(1) URLDNS链原理分析

Java安全 反序列化(1) URLDNS链原理分析 文章目录 Java安全 反序列化(1) URLDNS链原理分析前置知识应用分析payload1.新建HashMap类2.新建URL类3.获取URL 的 Class对象4.通过反射访问URL内部变量5.通过反射为URL中类赋值6.调用HashMap#put方法传入key和value7.再次通过反射为UR…

自己录的视频怎么配上字幕?推荐几种方法

自己录的视频怎么配上字幕&#xff1f;在数字化时代&#xff0c;视频已经成为人们获取信息、娱乐消遣的重要形式。而对于许多内容创作者来说&#xff0c;为自己的视频添加字幕不仅能提升观众的观看体验&#xff0c;还能增加视频的专业度和吸引力。那么&#xff0c;如何为自己的…

如何在Linux系统下创建共享文件?

首先共享文件一定不能在各用户的家目录下创建&#xff0c;因为各用户家目录通常都只对自己开放&#xff0c;其他用户没有权限进入目录&#xff0c;读写其中的文件。 因此&#xff0c;共享文件必须在非用户目录下创建&#xff0c;且需要将other的权限全部放开。例如&#xff0c;…