Git 的详细介绍及用法

news2025/3/13 16:02:39

一、Git 的优点

  1. 分布式版本控制

    • 每个开发者都拥有完整的仓库副本,无需依赖中央服务器(如 SVN)。
    • 支持离线操作(提交、查看历史、创建分支等)。
  2. 高效的分支管理

    • 创建和切换分支速度快(几乎是瞬间完成)。
    • 适合多人协作开发,支持多种工作流(如 Git Flow、GitHub Flow)。
  3. 强大的撤销和恢复能力

    • 可以回退到任意历史版本,避免代码丢失。
    • 提供 git resetgit revertgit stash 等撤销工具。
  4. 数据完整性

    • 所有文件通过 SHA-1 哈希算法校验,确保内容不被篡改。
  5. 适合多人协作

    • 通过 pull requestmergerebase 实现代码审查和集成。

二、Git 详细用法与代码示例

1. 安装与配置

  • 安装 Git
    下载地址:https://git-scm.com/

  • 配置用户信息

    git config --global user.name "Your Name"
    git config --global user.email "your.email@example.com"
    
  • 查看配置

    git config --list
    

2. 基础命令

(1) 初始化仓库
mkdir my-project
cd my-project
git init  # 初始化 Git 仓库
(2) 添加文件到暂存区
git add file.txt        # 添加单个文件
git add .               # 添加所有修改的文件
git add *.js            # 添加所有 .js 文件
(3) 提交到本地仓库
git commit -m "Initial commit: add project structure"
(4) 查看状态与历史
git status              # 查看工作区状态
git log                 # 查看提交历史
git log --oneline       # 简洁模式查看历史
git diff                # 查看未暂存的修改

3. 分支管理

(1) 创建与切换分支
git branch feature-login    # 创建分支
git checkout feature-login  # 切换分支
git checkout -b feature-login  # 创建并切换(推荐)
(2) 合并分支
git checkout main          # 切换到主分支
git merge feature-login    # 合并 feature-login 到 main
(3) 解决冲突

如果合并时发生冲突,手动修改冲突文件后:

git add resolved-file.txt
git commit -m "Resolve merge conflict"
(4) 删除分支
git branch -d feature-login  # 删除本地分支
git push origin --delete feature-login  # 删除远程分支

4. 远程仓库(GitHub/GitLab)

(1) 添加远程仓库
git remote add origin https://github.com/yourname/repo.git
(2) 推送代码到远程
git push -u origin main  # 首次推送
git push                 # 后续推送
(3) 拉取代码
git pull origin main     # 拉取并合并远程代码
git fetch origin         # 仅拉取不合并
(4) 克隆仓库
git clone https://github.com/yourname/repo.git

5. 高级操作

(1) 撤销修改
git checkout -- file.txt  # 丢弃工作区的修改
git reset HEAD file.txt   # 从暂存区移除文件
git reset --hard HEAD^    # 回退到上一个提交(慎用!会丢失修改)
(2) 暂存未完成的工作
git stash          # 保存当前修改到暂存区
git stash pop      # 恢复最近一次暂存的修改
(3) 重写提交历史
git commit --amend -m "New message"  # 修改最后一次提交
git rebase -i HEAD~3                 # 交互式修改最近3次提交

三、代码示例:完整工作流

假设你要开发一个登录功能:

# 1. 克隆远程仓库
git clone https://github.com/yourname/project.git
cd project

# 2. 创建并切换到新分支
git checkout -b feature-login

# 3. 修改代码后提交
echo "function login() { ... }" >> login.js
git add login.js
git commit -m "Add login function"

# 4. 推送分支到远程
git push -u origin feature-login

# 5. 在 GitHub 创建 Pull Request (PR) 合并到 main
# (PR 通过后合并)

# 6. 切换回主分支并同步代码
git checkout main
git pull origin main

四、最佳实践

  1. 频繁提交
    每个小功能或修复单独提交,提交信息清晰(如 “Fix: resolve login timeout issue”)。

  2. 合理使用分支

    • main/master:稳定版本
    • develop:开发分支
    • feature/*:功能分支
    • hotfix/*:紧急修复分支
  3. 定期拉取远程代码
    避免长时间不同步导致冲突。

  4. 使用 .gitignore
    忽略临时文件(如 node_modules/, .log)。

  5. 代码审查
    通过 Pull Request 进行代码审查后再合并。


通过以上内容,你可以逐步掌握 Git 的核心用法。建议多实践操作,遇到问题时善用 git statusgit log 查看状态和历史。

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

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

相关文章

STM32之I2C硬件外设

注意:硬件I2C的引脚是固定的 SDA和SCL都是复用到外部引脚。 SDA发送时数据寄存器的数据在数据移位寄存器空闲的状态下进入数据移位寄存器,此时会置状态寄存器的TXE为1,表示发送寄存器为空,然后往数据控制寄存器中一位一位的移送数…

windows版本的时序数据库TDengine安装以及可视化工具

了解时序数据库TDengine,可以点击官方文档进行详细查阅 安装步骤 首先找到自己需要下载的版本,这边我暂时只写windows版本的安装 首先我们需要点开官网,找到发布历史,目前TDengine的windows版本只更新到3.0.7.1,我们…

【AI】单台10卡4090 openEuler服务器离线部署kasm workspace 提供简单的GPU云服务 虚拟化桌面

下载网址 Downloads | Kasm Workspaces 文件连接 wget https://kasm-static-content.s3.amazonaws.com/kasm_release_plugin_images_amd64_1.16.1.98d6fa.tar.gz wget https://kasm-static-content.s3.amazonaws.com/kasm_release_1.16.1.98d6fa.tar.gz wget https://kasm-st…

NetAssist 5.0.14网络助手基础使用及自动应答使用方案

以下是NetAssist v5.0.14自动应答功能的详细使用步骤: 一、基础准备: 工具下载网址页面:https://www.cmsoft.cn/resource/102.html 下载安装好后,根据需要可以创建多个server,双击程序图标运行即可,下面…

47.HarmonyOS NEXT 登录模块开发教程(二):一键登录页面实现

温馨提示:本篇博客的详细代码已发布到 git : https://gitcode.com/nutpi/HarmonyosNext 可以下载运行哦! HarmonyOS NEXT 登录模块开发教程(二):一键登录页面实现 文章目录 HarmonyOS NEXT 登录模块开发教程&#xff0…

5.1 程序调试

版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的 本节中为了演示方便,使用的代码如下: 【例 5.1】【项目:code5-001】程序的调试。 static void Ma…

Cursor初体验:excel转成CANoe的vsysvar文件

今天公司大佬先锋们给培训了cursor的使用,还给注册了官方账号!跃跃欲试,但是测试任务好重,结合第三方工具开发也是没有头绪。 但巧的是,刚好下午有同事有个需求,想要把一个几千行的excel转成canoe的系统变…

vue3-element-admin 前后端本地启动联调

一、后端环境准备 1.1、下载地址 gitee 下载地址 1.2、环境要求 JDK 17 1.3、项目启动 克隆项目 git clone https://gitee.com/youlaiorg/youlai-boot.git数据库初始化 执行 youlai_boot.sql 脚本完成数据库创建、表结构和基础数据的初始化。 修改配置 application-dev.y…

《MySQL数据库从零搭建到高效管理|库的基本操作》

目录 一、数据库的操作 1.1 展示数据库 1.2 创建数据库 1.3 使用数据库 1.4 查看当前数据库 1.5 删除数据库 1.6 小结 二、常用数据类型 2.1 数值类型 2.2 字符串类型 2.3 日期类型 一、数据库的操作 打开MySQL命令行客户端,安装完MySQL后会有两个客户端…

mac使用Homebrew安装miniconda(mac搭建python环境),并在IDEA中集成miniconda环境

一、安装Homebrew mac安装brew 二、使用Homebrew安装miniconda brew search condabrew install miniconda安装完成后的截图: # 查看是否安装成功 brew list环境变量(无需手动配置) 先执行命令看能不能正常返回,如果不能正常…

Linux基础开发工具—vim

目录 1、vim的概念 2、vim的常见模式 2.1 演示切换vim模式 3、vim命令模式常用操作 3.1 移动光标 3.2 删除文字 3.3 复制 3.4 替换 4、vim底行模式常用命令 4.1 查找字符 5、vim的配置文件 1、vim的概念 Vim全称是Vi IMproved,即说明它是Vi编辑器的增强…

【C++】数据结构 队列的实现

本篇博客给大家带来的是用C语言来实现数据结构的队列的实现! 🐟🐟文章专栏:数据结构 🚀🚀若有问题评论区下讨论,我会及时回答 ❤❤欢迎大家点赞、收藏、分享! 今日思想:你…

macOS 终端优化

macOS 安装、优化、还原、升级 Oh My Zsh 完全指南 🚀 Oh My Zsh 是 macOS 终端增强的利器,它能提供强大的自动补全、主题定制和插件支持,让你的终端更高效、更炫酷。本文将全面介绍 如何安装、优化、还原、重新安装和升级 Oh My Zsh&#x…

大语言模型-1.2-大模型技术基础

简介 本博客内容是《大语言模型》一书的读书笔记,该书是中国人民大学高瓴人工智能学院赵鑫教授团队出品,覆盖大语言模型训练与使用的全流程,从预训练到微调与对齐,从使用技术到评测应用,帮助学员全面掌握大语言模型的…

Flutter 按钮组件 TextButton 详解

目录 1. 引言 2. TextButton 的基本用法 3. 主要属性 4. 自定义按钮样式 4.1 修改文本颜色 4.2 添加背景色 4.3 修改按钮形状和边距 4.4 样式定制 5. 高级应用技巧 5.1 图标文本组合 5.2 主题统一配置 5.3 动态交互 6. 性能优化与注意事项 6.1 点击区域优化 6.…

Qt 数据库操作(Sqlite)

数据库简介 关于数据库的基础知识这里就不做介绍了,相关博客可以查看: SQL基础知识 数据库学霸笔记 上面博客都写的比较详细,本文主要介绍如何使用Qt进行数据库相关操作,数据库分为关系型数据库和非关系型数据,关系…

vue 自行封装组件,类似于el-tree组件结构

背景: 接口返回是平面数组,需要经过分类处理,转成多维数组,以满足封装组件的数据结构。 有用到插件lodash。 import { groupBy, flattenDeep } from "lodash"; 效果展示: 处理数据: 对于接口返回…

信奥赛CSP-J复赛集训(模拟算法专题)(10):P2356 弹珠游戏

信奥赛CSP-J复赛集训(模拟算法专题)(10):P2356 弹珠游戏 题目背景 题目描述 MedalPluS 和他的小伙伴 NOIRP 发掘了一个骨灰级别的游戏——超级弹珠。 游戏的内容是:在一个 n n n \times n nn 的矩阵里,有若干个敌人,你的弹珠可以摧毁敌人,但只能攻击你所在的行、…

Windows 图形显示驱动开发-WDDM 3.2- WDDM 功能的内核模式测试

概述 在某些情况下,引入了基于 WDDM 或 MCDM 的新计算设备,并且这些设备的驱动程序不支持 D3D 运行时。 为了帮助验证此类驱动程序,将功能添加到 Dxgkrnl ,以便仅使用内核模式 thunk 进行验证;也就是说,无需涉及 D3D …

SpringBoot 入门--工程创建

IDEA创建SpringBoot项目 SpringBoot 3.1.5 需要java17 ① 创建Maven工程 ② 导入spring-boot-stater-web起步依赖 ③ 编写Controller ④ 提供启动类 1.打开IDEA,新建项目 2.点击下一步,并勾选web开发相关依赖 3.勾选完点击Create,然后配置…