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

开发实战中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解释&#xff1a;在当前目录中初始化一个新的Git仓库。 2.克隆远程仓库 git clone <repository-url>解释&#xff1a;从远程仓库克隆一个完整的Git仓库到本地。 3.检查当前状态 git status解释&#xff1a;查看当前工作目录的状态…...

python调用chrome浏览器自动化如何选择元素

功能描述&#xff1a;在对话框输入文字&#xff0c;并发送。 注意&#xff1a; # 定位到多行文本输入框并输入内容。在selenium 4版本中&#xff0c;元素定位需要填写父元素和子元素名。 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&#xff08;Hyper Text Transfer Protocol&#xff09;&#xff1a; 全称超文本传输协议&#xff0c;是用于从万维网&#xff08;WWW:World Wide Web &#xff09;服务器传输超文本到本地浏览器的传送协议。 HTTP 协议的重要特点&#xff1a; 一发一收…...

electron项目中实现视频下载保存到本地

第一种方式&#xff1a;用户自定义选择下载地址位置 渲染进程 // 渲染进程// 引入 import { ipcRenderer } from "electron";// 列表行数据下载视频操作&#xff0c;diffVideoUrl 是视频请求地址 handleDownloadClick(row) {if (!row.diffVideoUrl) {this.$message…...

基于chrome插件的企业应用

一、chrome插件技术介绍 1、chrome插件组件介绍 名称 职责 访问权限 DOM访问情况 popup 弹窗页面。即打开形式是通过点击在浏览器右上方的icon&#xff0c;一个弹窗的形式。 注: 展示维度 browser_action:所有页面 page_action:指定页面 可访问绝大部分api 不可以 bac…...

unittest框架和pytest框架区别及示例

unittest框架和pytest框架区别及示例 类型unittest框架pytest框架unittest框架示例pytest框架示例安装python内置的一个单元测试框架,标准库&#xff0c;不需要安装第三方单元测试库&#xff0c;需要安装使用时直接引用 import unittest安装命令&#xff1a;pip3 install pyte…...

IDEA性能优化方法解决卡顿

文章目录 前言一、可以采取以下措施&#xff1a;二、VM Options的参数解释1. 内存设置2. 性能调优3. GC&#xff08;垃圾回收&#xff09;调优4. 调试和诊断5. 其它设置6.设置 VM Options 的步骤&#xff1a; 总结 前言 我们在使用 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&#xff08;Microsoft Foundation Class&#xff09;应用程序中&#xff0c;如果你想限制只允许产生一个应用程序实例&#xff0c;通常会使用互斥体&#xff08;Mutex&#xff09;来实现。这可以确保如果用户尝试启动第二个实例时&#xff0c;它会被阻止或将焦点返回到已…...

深入理解TCP/IP协议中的三次握手

&#x1f44d; 个人网站&#xff1a;【洛秋资源小站】 深入理解TCP/IP协议中的三次握手 在计算机网络中&#xff0c;TCP/IP协议是通信的基石。理解TCP/IP协议中的三次握手是掌握网络通信的关键步骤之一。本文将详细解释TCP/IP协议中的三次握手过程&#xff0c;探讨其工作原理&…...

【React】事件绑定、React组件、useState、基础样式

React 教程 目录 事件绑定 1.1. 基础实现 1.2. 使用事件参数 1.3. 传递自定义参数 1.4. 同时传递事件对象和自定义参数 React 组件 2.1. 组件是什么 2.2. 组件基础使用 useState&#xff1a;状态管理 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服务 一.前言 博主的环境是阿里云服务器&#xff0c;操作系统版本为 ubuntu20.04,一下所有操作都基于以上环境下进行的操作&#xff0c;同时为了简化操作我将开放同一个云服务器的不同端口&#xff0c;让它同时充当服务端和客户端&#xff0c;大家如果想测试效果更好且…...

Sphinx 安装相关指令解释

安装指令 pip3 install sphinx-autobuildpip3 install sphinx_rtd_themepip3 install sphinx_markdown_tablepip3 install sphinx_markdown_tables pip3 install sphinx-autobuild 功能&#xff1a;安装 sphinx-autobuild 包。作用&#xff1a;sphinx-autobuild 是一个工具&am…...

npm下载包-更改默认缓存目录

npm&#xff08;Node Package Manager&#xff09;的缓存目录是npm用于存储已下载包的本地位置&#xff0c;以便在后续安装相同包时能够快速复用&#xff0c;从而节省时间和带宽。npm缓存目录的具体位置会根据操作系统的不同而有所差异。 Windows系统 在Windows系统中&#x…...

PWM再理解(1)

前言 昨天过于劳累&#xff0c;十点睡觉&#xff0c;本来想梳理一下PWM&#xff0c;今天补上。 PWM内涵 PWM全称&#xff1a;Pulse Width Modulation&#xff0c;也就是脉宽调制的意思&#xff0c;字面意思理解就是对脉冲的宽度进行改变。准确就是通过数字输出对模拟电路进行…...

CSPVD 智慧工地安全帽安全背心检测开发包

CSPVD SDK适用于为各种智慧工地应用增加安全防护穿戴合规的检测能力&#xff0c;能够有效检测未戴安全帽和未穿 安全背心的人员&#xff0c;提供Web API和原生API。官方下载&#xff1a;CSPVD工地安全防护检测 1、目录组织 CSPVD开发包的目录组织说明如下&#xff1a; xlpr_…...

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…...

以下是对华为 HarmonyOS NETX 5属性动画(ArkTS)文档的结构化整理,通过层级标题、表格和代码块提升可读性:

一、属性动画概述NETX 作用&#xff1a;实现组件通用属性的渐变过渡效果&#xff0c;提升用户体验。支持属性&#xff1a;width、height、backgroundColor、opacity、scale、rotate、translate等。注意事项&#xff1a; 布局类属性&#xff08;如宽高&#xff09;变化时&#…...

select、poll、epoll 与 Reactor 模式

在高并发网络编程领域&#xff0c;高效处理大量连接和 I/O 事件是系统性能的关键。select、poll、epoll 作为 I/O 多路复用技术的代表&#xff0c;以及基于它们实现的 Reactor 模式&#xff0c;为开发者提供了强大的工具。本文将深入探讨这些技术的底层原理、优缺点。​ 一、I…...

在WSL2的Ubuntu镜像中安装Docker

Docker官网链接: https://docs.docker.com/engine/install/ubuntu/ 1、运行以下命令卸载所有冲突的软件包&#xff1a; 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&#xff08;位图&#xff09;是Android应用内存占用的“头号杀手”。一张1080P&#xff08;1920x1080&#xff09;的图片以ARGB_8888格式加载时&#xff0c;内存占用高达8MB&#xff08;192010804字节&#xff09;。据统计&#xff0c;超过60%的应用OOM崩溃与Bitm…...

服务器--宝塔命令

一、宝塔面板安装命令 ⚠️ 必须使用 root 用户 或 sudo 权限执行&#xff01; sudo su - 1. CentOS 系统&#xff1a; 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作用&#xff1a; 引入数据解析、网络请求、时间处理、数据库操作等所需库。requests&#xff1a;发送 …...

通过 Ansible 在 Windows 2022 上安装 IIS Web 服务器

拓扑结构 这是一个用于通过 Ansible 部署 IIS Web 服务器的实验室拓扑。 前提条件&#xff1a; 在被管理的节点上安装WinRm 准备一张自签名的证书 开放防火墙入站tcp 5985 5986端口 准备自签名证书 PS C:\Users\azureuser> $cert New-SelfSignedCertificate -DnsName &…...

Java求职者面试指南:Spring、Spring Boot、Spring MVC与MyBatis技术解析

Java求职者面试指南&#xff1a;Spring、Spring Boot、Spring MVC与MyBatis技术解析 一、第一轮基础概念问题 1. Spring框架的核心容器是什么&#xff1f;它的作用是什么&#xff1f; Spring框架的核心容器是IoC&#xff08;控制反转&#xff09;容器。它的主要作用是管理对…...