git常见使用

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 initgit 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.mzph.cn/news/755107.shtml

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

相关文章

spring 没完没了

start 轻量级开源的j2ee框架&#xff0c;容器框架 装javabean aop ioc 定义一个starter的jar包&#xff0c;写一个configuration配置类&#xff0c;将bean定义其中&#xff0c;在starter包的meta-inf/spring.factories中写入配置类&#xff0c;springboot会按约定加载该配置类 …

用户留存【摘录】

留存&#xff0c;是一个产品或者说企业&#xff0c;能够持续存活和不断发展的立身之本。 例如企业级SaaS产品&#xff0c;通常采用按年为单位进行付费的订阅模式。如果产品没有留住用户的能力&#xff0c;用户便会在第二年取消订阅&#xff0c;这将使得企业之前的投入付之东流…

Ubuntu软件开发环境搭建

Ubuntu软件开发环境搭建 安装VMware Tools网络桥接更新软件源常用功能配置时间同步共享文件夹双向复制粘贴终端初始大小和字体设置安装必要的工具 常用指令 安装VMware Tools 点击虚拟机->安装VMware Tools… 打开终端&#xff0c;cd到/media/用户名/VMware Tools/下&#…

语音控制模块_雷龙发展

一 硬件原理 1&#xff0c;串口 uart串口控制模式&#xff0c;即异步传送收发器&#xff0c;通过其完成语音控制。 发送uart将来自cpu等控制设备的并行数据转换为串行形式&#xff0c;并将其串行发送到接收uart&#xff0c;接收uart然后将串行数据转换为接收数据接收设备的并行…

旅游系统-软件与环境

一. 软件 1.Navicat、phpstudy、Idea、Vsode 参考 网盘链接 二.配置文件 1.NodeJS、JDK、Mysql 参考 网盘链接 注意点&#xff1a; 1.Mysql 切记需要环境变量配置 2.数据库密码要好记点的&#xff0c;别乱设 3.环境变量配置的路径要能找到 三.安装运行 1.下载网盘内的软件&am…

Linux docker1--环境及docker安装

一、基础环境要求 Docker分为ce版本&#xff08;免费&#xff0c;试用7个月&#xff09;和ee版本&#xff08;收费&#xff09;。 最低配置要求&#xff1a;64位操作系统&#xff0c;centOS 7及以上&#xff0c;内核版本不低于3.10 二、部署docker 1、查看服务的基础环境是否满…

使用 ONLYOFFICE API 构建 Java 转换器,在 Word 和 PDF 之间进行转换

文章作者&#xff1a;ajun 随着文档处理需求的增加&#xff0c;格式转换成为了一个重要的需求点。由于PDF格式具有跨平台、不易被篡改的特性&#xff0c;将Word格式(.docx)转换为PDF格式(.pdf)的需求尤为强烈。ONLYOFFICE作为一个强大的办公套件&#xff0c;提供了这样的转换功…

C语言数据结构与算法笔记(排序算法)

排序算法 基础排序 冒泡排序 核心为交换&#xff0c;通过不断进行交换&#xff0c;将大的元素一点一点往后移&#xff0c;每一轮最大的元素排到对应的位置上&#xff0c;形成有序。 设数组长度为N&#xff0c;过程为: 共进行N轮排序每一轮排序从数组的最左边开始&#xff0…

Django templates 存放html目录

模板 一概述 模板由两部分组成&#xff0c;一部分是HTML代码&#xff0c;一部分是逻辑控制代码&#xff08;变量&#xff0c;标签&#xff0c;过滤器&#xff09; 作用&#xff1a;可以通过一些逻辑控制代码减少一些重复的操作更快速的生成HTML代码&#xff0c;并且实现简单的…

基于Spring Boot的宿舍管理系统

摘 要 随着信息时代的来临&#xff0c;过去的传统管理方式缺点逐渐暴露&#xff0c;对过去的传统管理方式的缺点进行分析&#xff0c;采取计算机方式构建宿舍管理系统。本文通过课题背景、课题目的及意义相关技术&#xff0c;提出了一种楼宇信息、宿舍信息、宿舍安排、缺勤信息…

计算机网络:TCP篇

计网tcp部分面试总结 tcp报文格式&#xff1a; 序列号&#xff1a;通过SYN传给接收端&#xff0c;当SYN为1&#xff0c;表示请求建立连接&#xff0c;且设置序列号初值&#xff0c;后面没法送一次数据&#xff0c;就累加数据大小&#xff0c;保证包有序。 确认应答号&#x…

Prometheus修改默认数据存储时间

Prometheus的默认数据存储时间可以通过修改启动脚本中的相关参数来调整。具体来说&#xff0c;可以通过修改--storage.tsdb.retention.time参数来改变数据保留的时长。该参数决定了何时删除旧数据&#xff0c;默认为15天。如果需要延长数据保留时间&#xff0c;可以将该参数的值…

【机器学习】函数

sigmoid函数 import matplotlib.pyplot as plt import numpy as npdef sigmoid(x):return 1/(1np.exp(-x))def plot_sigmoid():# param:起点&#xff0c;终点&#xff0c;间距x np.arange(-10, 10, 0.1) #起点&#xff0c;终点&#xff0c;间距y sigmoid(x)plt.plot(x, y)plt…

鸿蒙Harmony应用开发—ArkTS声明式开发(绘制组件:Rect)

矩形绘制组件。 说明&#xff1a; 该组件从API Version 9开始支持。后续版本如有新增内容&#xff0c;则采用上角标单独标记该内容的起始版本。 子组件 无 接口 Rect(value?: {width?: string | number,height?: string | number,radius?: string | number | Array<s…

Sentinel基础使用

1. 概念解释 限流&#xff1a;对并发访问进行限速。限流的一些行为&#xff1a; 1. 拒绝服务&#xff1a;将多余的请求直接拒绝掉2.服务降级&#xff1a;降级甚至关闭后台的某些服务3.特权请求&#xff1a;在多租户或者对用户进行分级时&#xff0c;考虑让特权用户进行访问4.延…

论文解析:V3D: Video Diffusion Models are Effective 3DGenerators

摘要&#xff1a; 自动三维生成最近引起了广泛关注。最近的方法大大加快了生成速度&#xff0c;但由于模型容量有限或三维数据&#xff0c;生成的物体通常不够精细。在视频扩散模型最新进展的推动下&#xff0c;我们引入了 V3D&#xff0c;利用预训练视频扩散模型的世界模拟能…

YOLOV5 部署:基于web网页的目标检测(本地、云端均可)

1、前言 YOLOV5推理的代码很复杂,大多数都是要通过命令行传入参数进行推理,不仅麻烦而且小白不便使用。 本章介绍的web推理,仅仅需要十几行代码就能实现本地推理,并且只需要更改单个参数就可以很方便的部署云端,外网也可以随时的使用 之前文章介绍了QT的可视化推理界面,…

Linux初识环境变量

&#x1f30e;环境变量【上】 文章目录&#xff1a; 环境变量 什么是环境变量 关于命令行参数 环境变量       简单了解       为什么需要环境变量       系统中其他环境变量 总结 前言&#xff1a; 环境变量是一种非常重要的概念&#xff0c;它们对于系统的…

TH-FBCQX2防爆气象站

TH-FBCQX2防爆气象站主要适用于易燃易爆、危险性高的场所。以下是其主要的适用领域&#xff1a; 石油与天然气行业&#xff1a;在石油和天然气的生产、储存和运输过程中&#xff0c;防爆气象站可以监测环境中的可燃气体浓度&#xff0c;并根据气象条件预测爆炸风险。同时&…

Machine Learning ---- Gradient Descent

目录 一、The concept of gradient&#xff1a; ① In a univariate function&#xff1a; ②In multivariate functions&#xff1a; 二、Introduction of gradient descent cases&#xff1a; 三、Gradient descent formula and its simple understanding: 四、Formula o…