开发实战中Git的常用操作
Git基础操作
1.初始化仓库
git init
解释:在当前目录中初始化一个新的Git仓库。
2.克隆远程仓库
git clone <repository-url>
解释:从远程仓库克隆一个完整的Git仓库到本地。
3.检查当前状态
git status
解释:查看当前工作目录的状态,包括已修改、已暂存和未跟踪文件。
4.添加文件到暂存区
git add <file-name>
git add .
解释:将文件或所有修改添加到暂存区,为下次提交做准备。
5. 提交更改
git commit -m "Commit message"
解释:将暂存区中的更改提交到本地仓库。
6. 查看提交历史
git log
解释:查看项目的提交历史记录。
7. 创建新分支
git branch <branch-name>
解释:创建一个新的分支。
8. 切换分支
git checkout <branch-name>
解释:切换到指定的分支。
9. 创建并切换到新分支
git checkout -b <branch-name>
解释:创建一个新的分支并立即切换到该分支。
10. 合并分支
git merge <branch-name>
解释:将指定分支的更改合并到当前分支。
11. 删除分支
git branch -d <branch-name>
解释:删除本地分支(必须没有未合并的更改)。
12. 推送分支到远程仓库
不设置上游分支
git push origin <branch-name>
设置上游分支
git push -u origin <branch-name>
解释:将本地分支推送到远程仓库,加上-u是为了设置上游分支(即将远程仓库的分支设置为本地分支的上游分支),这样以后可以直接使用 git push 和 git pull 同步,而无需每次都指定分支名称。
13. 拉取远程分支的最新更改
git pull origin <branch-name>
解释:从远程仓库拉取指定分支的最新更改并合并到当前分支。
14. 查看分支
git branch
解释:查看所有本地分支,当前分支会有星号标记。
Git高级操作
1.查看分支图
git log --graph --oneline --all --decorate
解释:以图形方式显示提交历史
2.标签操作(Tag)
Git Tag 是一个非常实用的工具,它可以帮助我们更好地管理和标识代码版本。通过为重要的里程碑事件打上标签,我们可以更轻松地追踪项目的进展和发布历史。
创建标签
git tag <tag_name>
# 例如:
git tag v1.0.0
解释:创建轻量标签,轻量标签只是一个指向特定提交的引用,不包含其他信息。
git tag -a <tag_name> -m 'Your message here'
# 例如:
git tag -a v1.0.0 -m 'First stable version'
解释:创建一个带有消息的附注标签。
git tag -a <tag_name> <commit_hash> -m 'Your message here'
# 例如:
git tag -a v1.0.0-beta abcdef123456 -m 'Beta release'
解释:如果你想为某个特定的提交创建标签,可以在命令后加上提交哈希值(commit hash)。
查看标签
查看本地所有Tag:
git tag
获取最新的版本标签:
git describe --tags --abbrev=0
解释:你可以通过 git describe --tags --abbrev=0 命令获取最新的版本标签(注意这可能需要你先拉取远程仓库的最新数据)。
查看某个特定Tag的信息:
git show <tag_name>
# 例如:
git show v1.0.0
查看远程仓库的所有 Tag:
git ls-remote --tags origin
推送标签
推送单个 Tag 到远程仓库:
git push origin <tag-name>
推送所有本地 Tag 到远程仓库:
git push origin --tags
删除Tag
删除本地 Tag:
git tag -d <tag_name>
# 例如:
git tag -d v1.0.0
删除远程仓库的 Tag:
git push origin --delete <tag_name>
# 例如:
git push origin --delete v1.0.0
或者:
git tag -d <tag_name> # 先删除本地标签
git push origin :refs/tags/<tag_name> # 再删除远程标签
检出Tag
可以使用 git checkout 命令来检出 Tag,但这会使你进入“游离 HEAD”状态。
git checkout <tag_name>
# 例如:
git checkout v1.0.0
如果你想要在某个 Tag 的基础上创建一个新的分支并检出,可以使用 git checkout -b <branch_name> <tag_name>。
git checkout -b new-branch v1.0.0
检出后可以使用
git push -u origin <branch-name>
将本地分支推送到远程仓库
3.删除远程分支
git push origin --delete <branch-name>
解释:删除远程仓库中的指定分支。
4.丢弃本地更改
git checkout -- <file-name>
解释:丢弃本地对文件的未暂存更改,恢复到上一次提交的状态。
5.重置到某个提交
git reset --hard <commit-hash>
解释:将当前分支重置到指定提交,并丢弃所有后续的更改。
6.拆分提交
git rebase -i <commit-hash>
解释:交互式rebase,用于修改提交历史。
7.暂存和恢复更改
git stash
git stash pop
解释:将当前更改暂存起来,并可以稍后恢复。
常见坑点及解决方法
1. 合并冲突
坑点:在合并分支时,如果同一文件的同一部分被不同分支修改,会产生冲突。
解决方法:手动编辑冲突文件,决定如何合并更改,然后使用git add和git commit完成合并。
2. 覆盖远程分支
坑点:使用git push -f强制推送会覆盖远程分支历史,导致其他人无法正常拉取。
解决方法:尽量避免使用-f选项,如果必须使用,确保通知团队成员并协调好。
3. 提交历史混乱
坑点:频繁的、无意义的提交会使提交历史混乱。
解决方法:在合并到主分支前,使用git rebase -i整理提交历史,合并相似的提交。
4. 丢失未跟踪文件
坑点:运行git clean -f会删除所有未跟踪的文件。
解决方法:在运行该命令前使用git clean -n查看将被删除的文件列表,确认无误后再执行。
5. 分支冲突
坑点:创建新分支时未基于最新的主分支,导致合并时产生大量冲突。
解决方法:在创建新分支前,确保主分支是最新的(使用git pull origin main)。
6. 无法回滚
坑点:误用git reset --hard导致无法回滚到之前的状态。
解决方法:使用git reflog查看所有操作历史,找到误操作前的commit hash,然后回滚。
7. 未推送提交
坑点:本地提交后忘记推送到远程仓库,导致其他人无法获取最新更改。
解决方法:提交后及时使用git push将更改推送到远程仓库,并与团队成员保持沟通。
8. 错误的rebase操作
坑点:在公共分支上使用git rebase会导致其他人拉取时产生冲突。
解决方法:避免在公共分支上使用rebase,可以使用merge代替。
通过掌握这些操作和注意这些坑点,可以有效地使用Git进行版本控制,并避免常见的错误和问题。
相关文章:
开发实战中Git的常用操作
Git基础操作 1.初始化仓库 git init解释:在当前目录中初始化一个新的Git仓库。 2.克隆远程仓库 git clone <repository-url>解释:从远程仓库克隆一个完整的Git仓库到本地。 3.检查当前状态 git status解释:查看当前工作目录的状态…...
python调用chrome浏览器自动化如何选择元素
功能描述:在对话框输入文字,并发送。 注意: # 定位到多行文本输入框并输入内容。在selenium 4版本中,元素定位需要填写父元素和子元素名。 textarea driver.find_element(By.CSS_SELECTOR,textarea.el-textarea__inner) from …...
深入理解JS中的排序
在JavaScript开发中,排序是一项基础而重要的操作。本文将探讨JavaScript中几种常见的排序算法,包括它们的原理、实现方式以及适用场景。 1、冒泡排序 1.1、原理 通过比较相邻两个数的大小,交换位置排序:如果后一个数比前一个数小,则交换两个数的位置,重复这个过程,直…...
Kafka之存储设计
文章目录 1. 分区和副本的存储结构1. 分区和副本的分布2. 存储目录结构3. 文件描述 2. 相关配置3. 数据文件类型4. 数据定位原理LogSegment 类UnifiedLog 类 5. 副本数据同步HW水位线LEO末端偏移量HW更新原理 6. 数据清除 1. 分区和副本的存储结构 在一个多 broker 的 Kafka 集…...
Python面试整理-Python中的函数定义和调用
在Python中,函数是一种封装代码的方式,使得代码模块化和复用性更强。定义和调用函数是Python编程中的基本技能。以下是关于如何在Python中定义和调用函数的详细介绍: 函数定义 函数在Python中使用def关键字进行定义。函数体开始前,通常有一个可选的文档字符串(docstring)…...
HTTP协议、Wireshark抓包工具、json解析、天气爬虫
HTTP超文本传输协议 HTTP(Hyper Text Transfer Protocol): 全称超文本传输协议,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。 HTTP 协议的重要特点: 一发一收…...
electron项目中实现视频下载保存到本地
第一种方式:用户自定义选择下载地址位置 渲染进程 // 渲染进程// 引入 import { ipcRenderer } from "electron";// 列表行数据下载视频操作,diffVideoUrl 是视频请求地址 handleDownloadClick(row) {if (!row.diffVideoUrl) {this.$message…...
基于chrome插件的企业应用
一、chrome插件技术介绍 1、chrome插件组件介绍 名称 职责 访问权限 DOM访问情况 popup 弹窗页面。即打开形式是通过点击在浏览器右上方的icon,一个弹窗的形式。 注: 展示维度 browser_action:所有页面 page_action:指定页面 可访问绝大部分api 不可以 bac…...
unittest框架和pytest框架区别及示例
unittest框架和pytest框架区别及示例 类型unittest框架pytest框架unittest框架示例pytest框架示例安装python内置的一个单元测试框架,标准库,不需要安装第三方单元测试库,需要安装使用时直接引用 import unittest安装命令:pip3 install pyte…...
IDEA性能优化方法解决卡顿
文章目录 前言一、可以采取以下措施:二、VM Options的参数解释1. 内存设置2. 性能调优3. GC(垃圾回收)调优4. 调试和诊断5. 其它设置6.设置 VM Options 的步骤: 总结 前言 我们在使用 IntelliJ IDEA的时候有时候会觉得卡顿&#x…...
Mysql集合转多行
mysql 集合转多行 SELECT substring_index(substring_index(t1.group_ids, ,, n), ,, -1) AS group_id FROM (select 908,909 as group_ids ) t1, (SELECT rownum : rownum 1 AS n FROM ( SELECT rownum : 0 ) r, orders ) t2 WHERE n < ( LENGTH( t1.group_ids ) - LENGT…...
MFC:只允许产生一个应用程序实例的具体实现
在MFC(Microsoft Foundation Class)应用程序中,如果你想限制只允许产生一个应用程序实例,通常会使用互斥体(Mutex)来实现。这可以确保如果用户尝试启动第二个实例时,它会被阻止或将焦点返回到已…...
深入理解TCP/IP协议中的三次握手
👍 个人网站:【洛秋资源小站】 深入理解TCP/IP协议中的三次握手 在计算机网络中,TCP/IP协议是通信的基石。理解TCP/IP协议中的三次握手是掌握网络通信的关键步骤之一。本文将详细解释TCP/IP协议中的三次握手过程,探讨其工作原理&…...
【React】事件绑定、React组件、useState、基础样式
React 教程 目录 事件绑定 1.1. 基础实现 1.2. 使用事件参数 1.3. 传递自定义参数 1.4. 同时传递事件对象和自定义参数 React 组件 2.1. 组件是什么 2.2. 组件基础使用 useState:状态管理 3.1. 基础使用 3.2. 状态的修改规则 3.3. 修改对象状态 基础样式 4.1. 行…...
x264、x265、libaom 编码对比实验
介绍 x264 是一个开源的高性能 H.264/MPEG-4 AVC 编码器,它以其优秀的压缩比和广泛的适用性而闻名。x265 是一种用于将视频流编码成 H.265/MPEG-H HEVC 压缩格式的免费软件库和应用程序,以其下一代压缩能力和卓越的质量而闻名 。作为 x264 的继任者,x265 支持 HEVC 的 Main、…...
c++网络编程实战——开发基于ftp协议的文件传输模块(二) 配置ftp服务与手动执行ftp命令
配置FTP服务 一.前言 博主的环境是阿里云服务器,操作系统版本为 ubuntu20.04,一下所有操作都基于以上环境下进行的操作,同时为了简化操作我将开放同一个云服务器的不同端口,让它同时充当服务端和客户端,大家如果想测试效果更好且…...
Sphinx 安装相关指令解释
安装指令 pip3 install sphinx-autobuildpip3 install sphinx_rtd_themepip3 install sphinx_markdown_tablepip3 install sphinx_markdown_tables pip3 install sphinx-autobuild 功能:安装 sphinx-autobuild 包。作用:sphinx-autobuild 是一个工具&am…...
npm下载包-更改默认缓存目录
npm(Node Package Manager)的缓存目录是npm用于存储已下载包的本地位置,以便在后续安装相同包时能够快速复用,从而节省时间和带宽。npm缓存目录的具体位置会根据操作系统的不同而有所差异。 Windows系统 在Windows系统中&#x…...
PWM再理解(1)
前言 昨天过于劳累,十点睡觉,本来想梳理一下PWM,今天补上。 PWM内涵 PWM全称:Pulse Width Modulation,也就是脉宽调制的意思,字面意思理解就是对脉冲的宽度进行改变。准确就是通过数字输出对模拟电路进行…...
CSPVD 智慧工地安全帽安全背心检测开发包
CSPVD SDK适用于为各种智慧工地应用增加安全防护穿戴合规的检测能力,能够有效检测未戴安全帽和未穿 安全背心的人员,提供Web API和原生API。官方下载:CSPVD工地安全防护检测 1、目录组织 CSPVD开发包的目录组织说明如下: xlpr_…...
给常用Docker命令起别名,提高效率
在日常的开发和运维工作中,Docker是一款非常常用的工具。为了提高工作效率,我们可以为一些常用的Docker命令设置别名,这样可以更快速地执行这些命令。以下是如何给常用Docker命令起别名的详细步骤。 修改/root/.bashrc文件 首先,…...
基于深度学习的草莓成熟度实时检测系统(UI界面+YOLOv8/v7/v6/v5模型+完整代码与数据集)
1. 引言 在农业领域,草莓的成熟度检测是保证果实品质的重要环节。传统的方法依赖于人工经验,不仅耗时费力,还容易出错。本文介绍如何使用YOLO(You Only Look Once)系列模型(YOLOv8/v7/v6/v5)构…...
【devops】ttyd 一个web版本的shell工具 | web版本shell工具 | web shell
一、什么是 TTYD ttyd是在web端一个简单的服务器命令行工具 类似我们在云厂商上直接ssh链接我们的服务器输入指令一样 二、安装ttyd 1、macOS Install with Homebrew: brew install ttydInstall with MacPorts: sudo port install ttyd 2、linux Binary version (recommend…...
Windows环境Apache配置解析PHP,以及配置虚拟主机详解
1. 安装 Apache 和 PHP 确保你已经安装了 Apache Web 服务器和 PHP。你可以从官方网站下载它们的 Windows 版本: Apache HTTP ServerPHP 2. 配置 Apache 配置 httpd.conf 文件 找到你的 Apache 安装目录下的 conf 文件夹中的 httpd.conf 文件,使用文…...
Redis高级篇—分布式缓存
目录 Redis持久化 RDB持久化 AOF持久化 RDB与AOF对比 Redis主从 全量同步 增量同步 Redis哨兵 RedisTemplate集成哨兵实现 Redis分片集群 散列插槽 集群伸缩 故障转移 自动故障转移 手动故障转移 RedisTemplate访问分片集群 Redis持久化 RDB持久化 RDB全称Re…...
c++端的类,作为组件在qml端使用
qml使用c端的类,作为组件在qml端使用 这个类必须继承QObject 这个类必须继承QObject #ifndef COLLISIONALARM_H #define COLLISIONALARM_H#include <QObject>class CollisionAlarm : public QObject {Q_OBJECT//这个宏就叫做反射机制,让qml端直接…...
Android 14 适配之 - 全屏 intent 通知
全屏 intent 通知 在 Android 11(API 级别 30)中,任何应用都可以在手机处于锁定状态时使用 Notification.Builder.setFullScreenIntent 发送全屏 intent。在 AndroidManifest 中声明 USE_FULL_SCREEN_INTENT 权限即可; 全屏 int…...
如何在 Vue 和 JavaScript 中截取视频任意帧图片
大家好!今天我们来聊聊如何在 Vue 和 JavaScript 中截取视频的任意一帧图片。这个功能在很多场景下都非常有用,比如视频编辑、视频预览等。本文将带你一步步实现这个功能,并且会提供详细的代码示例。 准备工作 首先,我们需要一个…...
代码随想录学习 day54 图论 Bellman_ford 队列优化算法(又名SPFA) 学习
Bellman_ford 队列优化算法(又名SPFA) 卡码网:94. 城市间货物运输 I 题目描述 某国为促进城市间经济交流,决定对货物运输提供补贴。共有 n 个编号为 1 到 n 的城市,通过道路网络连接,网络中的道路仅允许从…...
递归遍历树结构,前端传入一整颗树,后端处理这个树,包括生成树的id和pid等信息,
递归逻辑 递归遍历树结构,将树结构转换list集合 并添加到 flowStepTree 集合 // 递归遍历树结构,将树结构转换list集合 并添加到 flowStepTree 集合private static void settingTree(ProductFlowStepVO node, Long parentId, String ancestors, List<…...
今日招聘/上海快速优化排名
理解Java泛型最简单的方法是把它看成一种便捷语法,能节省你某些Java类型转换(casting)上的操作:List box ...;Apple apple box.get(0);上面的代码自身已表达的很清楚:box是一个装有Apple对象的List。get方法返回一个Apple对象实例ÿ…...
wordpress域名访问/千锋教育的真实性
今天调试用例的脚本去调用封装好的日志模块(算是补充前面的写Python日志logging模块的使用的一个小bug吧),出现写入多个日志文件的问题,看下运行的效果分析:一共运行了4条myLog.logger().inf()(except异常那条不算),出现了4个日志文件&#x…...
公司网站建设应注意哪些/专业营销团队外包公司
百度搜索引擎对网站的收录与很多方面的因素有关,网站如果想要得到百度搜索引擎收录的话,站长需要不断对网站的整体结构进行调整和完善,从网站结构、内容、链接等细节方面着手优化,才能突破收录困境,循序渐进的提升网站…...
网站的ftp地址是什么/搜索引擎优化seo应用
HydroCMS定位于您的私人专属资料管理系统。 下一个功能将是:目录的访问权限设置。目前是根据文件的类型进行权限设计的,比如jpg格式的允许4级权限访问,dwg只能是3级才能访问……。这样不够好,应该按照文件夹进行权限设置ÿ…...
常州手机网站制作/代做百度首页排名价格
微服务架构 微服务的诞生并非偶然,它是在互联网高速发展,技术日新月异的变化以及传统架构无法适应快速变化等多重因素的推动下诞生的产物。互联网时代的产品通常有两类特点:需求变化快和用户群体庞大,在这种情况下,如…...
网站开发标书/店面怎么做位置定位
2019独角兽企业重金招聘Python工程师标准>>> 对象属性转换为map 1、空值保留(强制转换 fastJson) JSONObject jonsObject (JSONObject)JSONObject.toJSON("类对象"); 2、空值过滤(非强制转换 fastJson) JSONObject jsonObject JSON.parseObject(JSON.…...