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

Git基础知识与常用命令指南

这是一个Git基础知识和常用命令的简要指南,涵盖了日常开发中最常用的操作。你可以将这个指南保存下来,作为日常工作的参考。
image.png

目录

  • 基础篇
    • 1. Git基本概念
    • 2. 配置Git
    • 3. 创建仓库
    • 4. 基本的工作流程
    • 5. 分支操作
    • 6. 查看历史
    • 7. 撤销更改
    • 8. 远程仓库操作
  • Git进阶知识与技巧指南
    • 1. 分支管理策略
      • Git Flow
      • GitHub Flow
    • 2. 高级分支操作
    • 3. 撤销操作
    • 4. 储藏(Stash)
    • 5. 子模块(Submodule)
    • 6. 打标签
    • 7. 使用别名
    • 8. 使用 Git Hooks
    • 9. 使用 Git Large File Storage (LFS)
    • 10. 高级日志查看
  • 总结

学习Git的一些建议:

  1. 先理解基本概念,如仓库、分支、提交等。
  2. 从基本的工作流程开始练习:修改文件、暂存、提交、推送。
  3. 尝试创建和管理分支,这是Git的强大特性之一。
  4. 学会查看和理解项目历史,使用git loggit diff
  5. 熟悉如何处理冲突,这在团队协作中很重要。
  6. 多加练习,可以创建一个测试仓库来尝试各种命令。

基础篇

1. Git基本概念

image.png

  • 仓库(Repository): 用来存放项目代码的地方
  • 分支(Branch): 独立的开发线
  • 提交(Commit): 保存当前工作进度
  • 远程仓库(Remote): 托管在网络上的项目仓库

2. 配置Git

image.png

git config --global user.name "Your Name"
git config --global user.email "your_email@example.com"

3. 创建仓库

git init  # 在当前目录初始化一个新的Git仓库
git clone <url>  # 克隆一个远程仓库到本地

4. 基本的工作流程

image.png

git status  # 查看仓库状态
git add <file>  # 将文件添加到暂存区
git commit -m "commit message"  # 提交更改
git push origin <branch>  # 将本地更改推送到远程仓库
git pull  # 从远程仓库拉取更新

5. 分支操作

image.png

git branch  # 列出所有本地分支
git branch <branch-name>  # 创建新分支
git checkout <branch-name>  # 切换到指定分支
git merge <branch-name>  # 合并指定分支到当前分支

6. 查看历史

image.png

git log  # 查看提交历史
git diff  # 查看未暂存的更改

7. 撤销更改

git checkout -- <file>  # 撤销对文件的修改
git reset HEAD <file>  # 取消暂存文件
git revert <commit>  # 撤销某次提交

8. 远程仓库操作

image.png

git remote add origin <url>  # 添加远程仓库
git fetch  # 从远程仓库获取最新更改但不合并
git pull  # 拉取远程更改并合并到当前分支
git push origin <branch>  # 推送本地分支到远程仓库

记住,实践是学习Git的最好方法。尝试在一个测试仓库中使用这些命令,会帮助你更好地理解Git的工作原理。
image.png

Git进阶知识与技巧指南

  • 分支管理策略:了解并在实际项目中尝试使用Git Flow或GitHub Flow。
  • 练习高级分支操作:尝试使用rebase和cherry-pick,理解它们与merge的区别。
  • 熟悉撤销操作:理解reset和revert的不同,谨慎使用,特别是在共享分支上。
  • 利用stash功能:在需要快速切换任务时,stash非常有用。
  • 了解子模块:如果你的项目依赖其他Git仓库,子模块会很有帮助。
  • 使用标签:为重要的版本打标签,便于快速定位。
  • 设置别名:为常用命令设置别名,提高效率。
  • 探索Git Hooks:尝试使用pre-commit hook来自动运行代码检查。
  • 考虑使用Git LFS:如果项目中有大文件,Git LFS可以帮助管理。
  • 学会高效查看日志:使用不同的log选项来更好地理解项目历史。
    这些高级特性需要在实际项目中反复练习才能熟练掌握。
    你可以创建一个练习项目,逐个尝试这些功能。

1. 分支管理策略

Git Flow

一种常用的分支管理策略,包括以下分支:

  • master: 主分支,存放稳定版本
  • develop: 开发分支
  • feature: 功能分支
  • release: 发布分支
  • hotfix: 热修复分支

这个图表展示了一个基于 Git Flow 的简化工作流。主要特点包括:

  • 主分支(main):只包含稳定的、可发布的代码。
  • 开发分支(develop):日常开发的集成分支。
  • 特性分支(feature):用于开发新功能。
  • 发布分支(未显示):用于准备新的生产版本。
  • 热修复分支(未显示):用于快速修复生产问题。

GitHub Flow

一种更简单的工作流:

  • 只有一个长期分支master
  • 其他都是短期的功能分支

2. 高级分支操作

git rebase <branch>  # 变基操作,将当前分支移植到指定分支之上
git cherry-pick <commit>  # 将指定的提交应用到当前分支

3. 撤销操作

git reset --hard <commit>  # 将HEAD重置到指定提交
git revert <commit>  # 创建一个新的提交来撤销指定提交的更改

4. 储藏(Stash)

git stash  # 暂时储藏当前工作目录的更改
git stash list  # 查看所有储藏
git stash apply  # 应用最近的储藏
git stash drop  # 删除最近的储藏

5. 子模块(Submodule)

git submodule add <url>  # 添加子模块
git submodule init  # 初始化子模块
git submodule update  # 更新子模块

6. 打标签

git tag <tagname>  # 创建轻量标签
git tag -a <tagname> -m "message"  # 创建附注标签
git push origin <tagname>  # 推送标签到远程

7. 使用别名

.gitconfig 文件中设置别名可以简化常用命令:

[alias]co = checkoutbr = branchci = commitst = status

8. 使用 Git Hooks

Git hooks 是在 Git 执行特定事件时自动运行的脚本,位于 .git/hooks 目录下。常用的 hooks 包括:

  • pre-commit: 提交前运行
  • post-commit: 提交后运行
  • pre-push: 推送前运行

9. 使用 Git Large File Storage (LFS)

对于大文件的版本控制,可以使用 Git LFS:

git lfs install  # 安装 Git LFS
git lfs track "*.psd"  # 追踪所有 PSD 文件

10. 高级日志查看

git log --graph --oneline --all  # 查看分支图
git reflog  # 查看所有操作历史

这些进阶技巧可以帮助你更高效地使用Git,特别是在复杂的项目或团队协作中。随着实践,你会逐渐掌握这些技巧,并在日常工作中灵活运用。

总结

Git 是一个非常强大的版本控制系统,虽然短时间无法全面掌握,但我们可以学习基础知识和常用命令。以下是一个简单的学习大纲:

  1. Git 基础概念 (1小时)

    • 什么是版本控制
    • Git 的历史和优势
    • 仓库、提交、分支的概念
  2. 安装和配置 Git (30分钟)

    • 在你的操作系统上安装 Git
    • 配置用户名和邮箱
  3. 创建和克隆仓库 (1小时)

    • 使用 git init 创建新仓库
    • 使用 git clone 克隆现有仓库
  4. 基本的 Git 工作流程 (2小时)

    • 使用 git status 查看仓库状态
    • 使用 git add 暂存更改
    • 使用 git commit 提交更改
    • 使用 git log 查看提交历史
  5. 分支操作 (2小时)

    • 创建分支 git branch
    • 切换分支 git checkout
    • 合并分支 git merge
  6. 远程仓库操作 (2小时)

    • 添加远程仓库 git remote add
    • 推送到远程 git push
    • 从远程拉取 git pull
  7. 实践项目 (剩余时间)

    • 创建一个小项目,运用学到的 Git 命令
    • 模拟团队协作,创建分支、合并更改等
  8. 额外资源和回顾 (30分钟)

    • 回顾学习内容
    • 推荐进阶学习资源

这个计划涵盖了 Git 的基础知识。

如果你想要更详细的解释或者关于某个特定部分的更多信息,请随时告诉我。欢迎在评论区交流~

相关文章:

Git基础知识与常用命令指南

这是一个Git基础知识和常用命令的简要指南,涵盖了日常开发中最常用的操作。你可以将这个指南保存下来,作为日常工作的参考。 目录 基础篇1. Git基本概念2. 配置Git3. 创建仓库4. 基本的工作流程5. 分支操作6. 查看历史7. 撤销更改8. 远程仓库操作 Git进阶知识与技巧指南1. 分…...

第8章:Electron 剪贴版和消息通知

在本章中&#xff0c;我们将介绍如何在Electron应用中与操作系统进行集成。这些操作包括剪贴板操作、通知系统、原生对话框等功能。 8.1 剪贴板操作 Electron 提供了 clipboard 模块&#xff0c;允许我们在应用中访问和操作剪贴板内容。以下是一些基本的剪贴板操作示例。 8.…...

Android zygote访谈录

戳蓝字“牛晓伟”关注我哦&#xff01; 用心坚持输出易读、有趣、有深度、高质量、体系化的技术文章&#xff0c;技术文章也可以有温度。 本文摘要 本文以访谈的方式来带大家了解zygote进程&#xff0c;了解zygote进程是啥&#xff1f;它的作用是啥&#xff1f;它是如何一步…...

nuxt、vue树形图d3.js

直接上代码 //安装 npm i d3 --save<template><div class"d3"><div :id"id" class"d3-content"></div></div> </template> <script> import * as d3 from "d3";export default {props: {d…...

香橙派AIpro测评:yolo8+usb鱼眼摄像头的Camera图像获取及识别

一、前言 近期收到了一块受到业界人士关注的开发板"香橙派AIpro",因为这块板子具有极高的性价比&#xff0c;同时还可以兼容ubuntu、安卓等多种操作系统&#xff0c;今天博主便要在一块832g的香橙派AI香橙派AIpro进行YoloV8s算法的部署并使用一个外接的鱼眼USB摄像头…...

大华设备接入GB28181视频汇聚管理平台EasyCVR安防监控系统的具体操作步骤

智慧城市/视频汇聚/安防监控平台EasyCVR兼容性强&#xff0c;支持多协议接入&#xff0c;包括国标GB/T 28181协议、GA/T 1400协议、部标JT808协议、RTMP、RTSP/Onvif协议、海康Ehome、海康SDK、大华SDK、华为SDK、宇视SDK、乐橙SDK、萤石云SDK等&#xff0c;并能对外分发RTMP、…...

Laravel包开发指南:构建可重用组件的艺术

标题&#xff1a;Laravel包开发指南&#xff1a;构建可重用组件的艺术 Laravel不仅是一个强大的Web应用框架&#xff0c;它的包&#xff08;Package&#xff09;系统也为开发者提供了构建和共享可重用组件的能力。通过包开发&#xff0c;开发者可以轻松地扩展Laravel的功能&am…...

JavaDS预备知识

集合框架 Java 集合框架 Java Collection Framework &#xff0c;又被称为容器 container &#xff0c;是定义在 java.util 包下的一组接口 interfaces和其实现类 classes 。 其主要表现为将多个元素 element 置于一个单元中&#xff0c;对数据进行创建(Create)、读取(Retrieve…...

日常学习--20240705

1、IO流 按照IO操作的数据类型分为字节流和字符流&#xff1a; 字节流&#xff1a;又分为输入流&#xff08;其他程序传递过来的数据&#xff0c;读取流中的数据&#xff09;和输出流&#xff08;往流中写数据&#xff0c;传递给其他程序&#xff09;;可以操作二进制文件&…...

Java中初始化一个List的多种方式

1.最原始的方式&#xff1a;先创建&#xff0c;然后再添加元素 List<String> list new ArrayList<>(); list.add("apple"); list.add("banana"); list.add("cherry");2.使用Arrays.asList 这是一种快速方便的方式&#xff0c;直接…...

BeikeShop多国语言多货币商城系统源码基于Laravel框架

BeikeShop是基于 Laravel 开发的一款开源商城系统&#xff0c;支持多语言商城 多货币商城 100%全开源 ChatGPT OpenAI B2C商城系统 H5商城 PHP商城系统 商城源码 PC商城 跨境电商系统 跨境商城系统 电商商城系统 Laravel 10 框架开发系统&#xff0c;支持插件市场。 Event 机制…...

gradle构建工具

setting.gradle // settings.gradle rootProject.name my-project // 指定根项目名称include subproject1, subproject2 // 指定子项目名称&#xff0c;可选jar包名称 方式一 jar {archiveBaseName my-application // 设置 JAR 文件的基本名称archiveVersion 1.0 // 设置…...

Java需要英语基础吗?

Java编程语言本身并不要求必须有很强的英语基础&#xff0c;因为Java的语法和逻辑是独立于任何特定语言的。我收集归类了一份嵌入式学习包&#xff0c;对于新手而言简直不要太棒&#xff0c;里面包括了新手各个时期的学习方向编程教学、问题视频讲解、毕设800套和语言类教学&am…...

14-36 剑和诗人10 - 用LLM构建 AI 代理平台

介绍 在当今快速发展的技术环境中&#xff0c;大型语言模型 (LLM) 和 AI 代理正在改变我们与信息交互、实现流程自动化以及应对不同行业复杂挑战的方式。随着这些强大的模型不断发展&#xff0c;对能够无缝集成和协调它们的强大平台的需求变得越来越重要。 让我们深入研究设计…...

如何在Java中实现批量数据处理

如何在Java中实现批量数据处理 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01; 1. 引言 在大数据时代&#xff0c;处理大量数据是许多应用程序中必不可少的需…...

项目部署_持续集成_Jenkins

1 今日内容介绍 1.1 什么是持续集成 持续集成&#xff08; Continuous integration &#xff0c; 简称 CI &#xff09;指的是&#xff0c;频繁地&#xff08;一天多次&#xff09;将代码集成到主干 持续集成的组成要素 一个自动构建过程&#xff0c; 从检出代码、 编译构建…...

如何选择TikTok菲律宾直播网络?

为了满足用户对于实时互动的需求&#xff0c;TikTok推出了直播功能&#xff0c;让用户能够与粉丝即时交流。本文将探讨如何选择适合的TikTok菲律宾直播网络&#xff0c;并分析OgLive是否是值得信赖的选择。 TikTok菲律宾直播网络面临的挑战 作为全球领先的短视频平台&#xff…...

Pseudo-Label : The Simple and Efficient Semi-Supervised Learning Method--论文笔记

论文笔记 资料 1.代码地址 https://github.com/iBelieveCJM/pseudo_label-pytorch 2.论文地址 3.数据集地址 论文摘要的翻译 本文提出了一种简单有效的深度神经网络半监督学习方法。基本上&#xff0c;所提出的网络是以有监督的方式同时使用标记数据和未标记数据来训练的…...

信息收集-arping

信息收集-arping 简介 arping 是一个用于发送 ARP 请求和接收 ARP 回复的工具。它通常用于检查网络中的 IP 地址是否被使用&#xff0c;或发现网络中的重复 IP 地址。arping 工具类似于 ping 命令&#xff0c;但它使用的是 ARP 协议而不是 ICMP 协议。在 Kali Linux 中&#…...

一文了解常见DNS问题

当企业的DNS出现故障时&#xff0c;为不影响企业的正常运行&#xff0c;团队需要能够快速确定问题的性质和范围。那么有哪些常见的DNS问题呢&#xff1f; 域名解析失败&#xff1a; 当您输入一个域名&#xff0c;但无法获取到与之对应的IP地址&#xff0c;导致无法访问相应的网…...

CTF show Web 红包题第六弹

提示 1.不是SQL注入 2.需要找关键源码 思路 进入页面发现是一个登录框&#xff0c;很难让人不联想到SQL注入&#xff0c;但提示都说了不是SQL注入&#xff0c;所以就不往这方面想了 ​ 先查看一下网页源码&#xff0c;发现一段JavaScript代码&#xff0c;有一个关键类ctfs…...

边缘计算医疗风险自查APP开发方案

核心目标:在便携设备(智能手表/家用检测仪)部署轻量化疾病预测模型,实现低延迟、隐私安全的实时健康风险评估。 一、技术架构设计 #mermaid-svg-iuNaeeLK2YoFKfao {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg…...

循环冗余码校验CRC码 算法步骤+详细实例计算

通信过程&#xff1a;&#xff08;白话解释&#xff09; 我们将原始待发送的消息称为 M M M&#xff0c;依据发送接收消息双方约定的生成多项式 G ( x ) G(x) G(x)&#xff08;意思就是 G &#xff08; x ) G&#xff08;x) G&#xff08;x) 是已知的&#xff09;&#xff0…...

Qwen3-Embedding-0.6B深度解析:多语言语义检索的轻量级利器

第一章 引言&#xff1a;语义表示的新时代挑战与Qwen3的破局之路 1.1 文本嵌入的核心价值与技术演进 在人工智能领域&#xff0c;文本嵌入技术如同连接自然语言与机器理解的“神经突触”——它将人类语言转化为计算机可计算的语义向量&#xff0c;支撑着搜索引擎、推荐系统、…...

新能源汽车智慧充电桩管理方案:新能源充电桩散热问题及消防安全监管方案

随着新能源汽车的快速普及&#xff0c;充电桩作为核心配套设施&#xff0c;其安全性与可靠性备受关注。然而&#xff0c;在高温、高负荷运行环境下&#xff0c;充电桩的散热问题与消防安全隐患日益凸显&#xff0c;成为制约行业发展的关键瓶颈。 如何通过智慧化管理手段优化散…...

学校时钟系统,标准考场时钟系统,AI亮相2025高考,赛思时钟系统为教育公平筑起“精准防线”

2025年#高考 将在近日拉开帷幕&#xff0c;#AI 监考一度冲上热搜。当AI深度融入高考&#xff0c;#时间同步 不再是辅助功能&#xff0c;而是决定AI监考系统成败的“生命线”。 AI亮相2025高考&#xff0c;40种异常行为0.5秒精准识别 2025年高考即将拉开帷幕&#xff0c;江西、…...

JVM虚拟机:内存结构、垃圾回收、性能优化

1、JVM虚拟机的简介 Java 虚拟机(Java Virtual Machine 简称:JVM)是运行所有 Java 程序的抽象计算机,是 Java 语言的运行环境,实现了 Java 程序的跨平台特性。JVM 屏蔽了与具体操作系统平台相关的信息,使得 Java 程序只需生成在 JVM 上运行的目标代码(字节码),就可以…...

​​企业大模型服务合规指南:深度解析备案与登记制度​​

伴随AI技术的爆炸式发展&#xff0c;尤其是大模型&#xff08;LLM&#xff09;在各行各业的深度应用和整合&#xff0c;企业利用AI技术提升效率、创新服务的步伐不断加快。无论是像DeepSeek这样的前沿技术提供者&#xff0c;还是积极拥抱AI转型的传统企业&#xff0c;在面向公众…...

无需布线的革命:电力载波技术赋能楼宇自控系统-亚川科技

无需布线的革命&#xff1a;电力载波技术赋能楼宇自控系统 在楼宇自动化领域&#xff0c;传统控制系统依赖复杂的专用通信线路&#xff0c;不仅施工成本高昂&#xff0c;后期维护和扩展也极为不便。电力载波技术&#xff08;PLC&#xff09;的突破性应用&#xff0c;彻底改变了…...

MLP实战二:MLP 实现图像数字多分类

任务 实战&#xff08;二&#xff09;&#xff1a;MLP 实现图像多分类 基于 mnist 数据集&#xff0c;建立 mlp 模型&#xff0c;实现 0-9 数字的十分类 task: 1、实现 mnist 数据载入&#xff0c;可视化图形数字&#xff1b; 2、完成数据预处理&#xff1a;图像数据维度转换与…...