开发实战中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_…...
铭豹扩展坞 USB转网口 突然无法识别解决方法
当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…...
以下是对华为 HarmonyOS NETX 5属性动画(ArkTS)文档的结构化整理,通过层级标题、表格和代码块提升可读性:
一、属性动画概述NETX 作用:实现组件通用属性的渐变过渡效果,提升用户体验。支持属性:width、height、backgroundColor、opacity、scale、rotate、translate等。注意事项: 布局类属性(如宽高)变化时&#…...
select、poll、epoll 与 Reactor 模式
在高并发网络编程领域,高效处理大量连接和 I/O 事件是系统性能的关键。select、poll、epoll 作为 I/O 多路复用技术的代表,以及基于它们实现的 Reactor 模式,为开发者提供了强大的工具。本文将深入探讨这些技术的底层原理、优缺点。 一、I…...
在WSL2的Ubuntu镜像中安装Docker
Docker官网链接: https://docs.docker.com/engine/install/ubuntu/ 1、运行以下命令卸载所有冲突的软件包: for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done2、设置Docker…...
Android Bitmap治理全解析:从加载优化到泄漏防控的全生命周期管理
引言 Bitmap(位图)是Android应用内存占用的“头号杀手”。一张1080P(1920x1080)的图片以ARGB_8888格式加载时,内存占用高达8MB(192010804字节)。据统计,超过60%的应用OOM崩溃与Bitm…...
服务器--宝塔命令
一、宝塔面板安装命令 ⚠️ 必须使用 root 用户 或 sudo 权限执行! sudo su - 1. CentOS 系统: yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh2. Ubuntu / Debian 系统…...
高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数
高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数 在软件开发中,单例模式(Singleton Pattern)是一种常见的设计模式,确保一个类仅有一个实例,并提供一个全局访问点。在多线程环境下,实现单例模式时需要注意线程安全问题,以防止多个线程同时创建实例,导致…...
python爬虫——气象数据爬取
一、导入库与全局配置 python 运行 import json import datetime import time import requests from sqlalchemy import create_engine import csv import pandas as pd作用: 引入数据解析、网络请求、时间处理、数据库操作等所需库。requests:发送 …...
通过 Ansible 在 Windows 2022 上安装 IIS Web 服务器
拓扑结构 这是一个用于通过 Ansible 部署 IIS Web 服务器的实验室拓扑。 前提条件: 在被管理的节点上安装WinRm 准备一张自签名的证书 开放防火墙入站tcp 5985 5986端口 准备自签名证书 PS C:\Users\azureuser> $cert New-SelfSignedCertificate -DnsName &…...
Java求职者面试指南:Spring、Spring Boot、Spring MVC与MyBatis技术解析
Java求职者面试指南:Spring、Spring Boot、Spring MVC与MyBatis技术解析 一、第一轮基础概念问题 1. Spring框架的核心容器是什么?它的作用是什么? Spring框架的核心容器是IoC(控制反转)容器。它的主要作用是管理对…...
