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

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

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

git config --global user.name "Your Name"
git config --global user.email "your_email@example.com"
3. 创建仓库
git init # 在当前目录初始化一个新的Git仓库
git clone <url> # 克隆一个远程仓库到本地
4. 基本的工作流程

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

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

git log # 查看提交历史
git diff # 查看未暂存的更改
7. 撤销更改
git checkout -- <file> # 撤销对文件的修改
git reset HEAD <file> # 取消暂存文件
git revert <commit> # 撤销某次提交
8. 远程仓库操作

git remote add origin <url> # 添加远程仓库
git fetch # 从远程仓库获取最新更改但不合并
git pull # 拉取远程更改并合并到当前分支
git push origin <branch> # 推送本地分支到远程仓库
记住,实践是学习Git的最好方法。尝试在一个测试仓库中使用这些命令,会帮助你更好地理解Git的工作原理。

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 是一个非常强大的版本控制系统,虽然短时间无法全面掌握,但我们可以学习基础知识和常用命令。以下是一个简单的学习大纲:
-
Git 基础概念 (1小时)
- 什么是版本控制
- Git 的历史和优势
- 仓库、提交、分支的概念
-
安装和配置 Git (30分钟)
- 在你的操作系统上安装 Git
- 配置用户名和邮箱
-
创建和克隆仓库 (1小时)
- 使用
git init创建新仓库 - 使用
git clone克隆现有仓库
- 使用
-
基本的 Git 工作流程 (2小时)
- 使用
git status查看仓库状态 - 使用
git add暂存更改 - 使用
git commit提交更改 - 使用
git log查看提交历史
- 使用
-
分支操作 (2小时)
- 创建分支
git branch - 切换分支
git checkout - 合并分支
git merge
- 创建分支
-
远程仓库操作 (2小时)
- 添加远程仓库
git remote add - 推送到远程
git push - 从远程拉取
git pull
- 添加远程仓库
-
实践项目 (剩余时间)
- 创建一个小项目,运用学到的 Git 命令
- 模拟团队协作,创建分支、合并更改等
-
额外资源和回顾 (30分钟)
- 回顾学习内容
- 推荐进阶学习资源
这个计划涵盖了 Git 的基础知识。
如果你想要更详细的解释或者关于某个特定部分的更多信息,请随时告诉我。欢迎在评论区交流~
相关文章:
Git基础知识与常用命令指南
这是一个Git基础知识和常用命令的简要指南,涵盖了日常开发中最常用的操作。你可以将这个指南保存下来,作为日常工作的参考。 目录 基础篇1. Git基本概念2. 配置Git3. 创建仓库4. 基本的工作流程5. 分支操作6. 查看历史7. 撤销更改8. 远程仓库操作 Git进阶知识与技巧指南1. 分…...
第8章:Electron 剪贴版和消息通知
在本章中,我们将介绍如何在Electron应用中与操作系统进行集成。这些操作包括剪贴板操作、通知系统、原生对话框等功能。 8.1 剪贴板操作 Electron 提供了 clipboard 模块,允许我们在应用中访问和操作剪贴板内容。以下是一些基本的剪贴板操作示例。 8.…...
Android zygote访谈录
戳蓝字“牛晓伟”关注我哦! 用心坚持输出易读、有趣、有深度、高质量、体系化的技术文章,技术文章也可以有温度。 本文摘要 本文以访谈的方式来带大家了解zygote进程,了解zygote进程是啥?它的作用是啥?它是如何一步…...
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",因为这块板子具有极高的性价比,同时还可以兼容ubuntu、安卓等多种操作系统,今天博主便要在一块832g的香橙派AI香橙派AIpro进行YoloV8s算法的部署并使用一个外接的鱼眼USB摄像头…...
大华设备接入GB28181视频汇聚管理平台EasyCVR安防监控系统的具体操作步骤
智慧城市/视频汇聚/安防监控平台EasyCVR兼容性强,支持多协议接入,包括国标GB/T 28181协议、GA/T 1400协议、部标JT808协议、RTMP、RTSP/Onvif协议、海康Ehome、海康SDK、大华SDK、华为SDK、宇视SDK、乐橙SDK、萤石云SDK等,并能对外分发RTMP、…...
Laravel包开发指南:构建可重用组件的艺术
标题:Laravel包开发指南:构建可重用组件的艺术 Laravel不仅是一个强大的Web应用框架,它的包(Package)系统也为开发者提供了构建和共享可重用组件的能力。通过包开发,开发者可以轻松地扩展Laravel的功能&am…...
JavaDS预备知识
集合框架 Java 集合框架 Java Collection Framework ,又被称为容器 container ,是定义在 java.util 包下的一组接口 interfaces和其实现类 classes 。 其主要表现为将多个元素 element 置于一个单元中,对数据进行创建(Create)、读取(Retrieve…...
日常学习--20240705
1、IO流 按照IO操作的数据类型分为字节流和字符流: 字节流:又分为输入流(其他程序传递过来的数据,读取流中的数据)和输出流(往流中写数据,传递给其他程序);可以操作二进制文件&…...
Java中初始化一个List的多种方式
1.最原始的方式:先创建,然后再添加元素 List<String> list new ArrayList<>(); list.add("apple"); list.add("banana"); list.add("cherry");2.使用Arrays.asList 这是一种快速方便的方式,直接…...
BeikeShop多国语言多货币商城系统源码基于Laravel框架
BeikeShop是基于 Laravel 开发的一款开源商城系统,支持多语言商城 多货币商城 100%全开源 ChatGPT OpenAI B2C商城系统 H5商城 PHP商城系统 商城源码 PC商城 跨境电商系统 跨境商城系统 电商商城系统 Laravel 10 框架开发系统,支持插件市场。 Event 机制…...
gradle构建工具
setting.gradle // settings.gradle rootProject.name my-project // 指定根项目名称include subproject1, subproject2 // 指定子项目名称,可选jar包名称 方式一 jar {archiveBaseName my-application // 设置 JAR 文件的基本名称archiveVersion 1.0 // 设置…...
Java需要英语基础吗?
Java编程语言本身并不要求必须有很强的英语基础,因为Java的语法和逻辑是独立于任何特定语言的。我收集归类了一份嵌入式学习包,对于新手而言简直不要太棒,里面包括了新手各个时期的学习方向编程教学、问题视频讲解、毕设800套和语言类教学&am…...
14-36 剑和诗人10 - 用LLM构建 AI 代理平台
介绍 在当今快速发展的技术环境中,大型语言模型 (LLM) 和 AI 代理正在改变我们与信息交互、实现流程自动化以及应对不同行业复杂挑战的方式。随着这些强大的模型不断发展,对能够无缝集成和协调它们的强大平台的需求变得越来越重要。 让我们深入研究设计…...
如何在Java中实现批量数据处理
如何在Java中实现批量数据处理 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿! 1. 引言 在大数据时代,处理大量数据是许多应用程序中必不可少的需…...
项目部署_持续集成_Jenkins
1 今日内容介绍 1.1 什么是持续集成 持续集成( Continuous integration , 简称 CI )指的是,频繁地(一天多次)将代码集成到主干 持续集成的组成要素 一个自动构建过程, 从检出代码、 编译构建…...
如何选择TikTok菲律宾直播网络?
为了满足用户对于实时互动的需求,TikTok推出了直播功能,让用户能够与粉丝即时交流。本文将探讨如何选择适合的TikTok菲律宾直播网络,并分析OgLive是否是值得信赖的选择。 TikTok菲律宾直播网络面临的挑战 作为全球领先的短视频平台ÿ…...
Pseudo-Label : The Simple and Efficient Semi-Supervised Learning Method--论文笔记
论文笔记 资料 1.代码地址 https://github.com/iBelieveCJM/pseudo_label-pytorch 2.论文地址 3.数据集地址 论文摘要的翻译 本文提出了一种简单有效的深度神经网络半监督学习方法。基本上,所提出的网络是以有监督的方式同时使用标记数据和未标记数据来训练的…...
信息收集-arping
信息收集-arping 简介 arping 是一个用于发送 ARP 请求和接收 ARP 回复的工具。它通常用于检查网络中的 IP 地址是否被使用,或发现网络中的重复 IP 地址。arping 工具类似于 ping 命令,但它使用的是 ARP 协议而不是 ICMP 协议。在 Kali Linux 中&#…...
一文了解常见DNS问题
当企业的DNS出现故障时,为不影响企业的正常运行,团队需要能够快速确定问题的性质和范围。那么有哪些常见的DNS问题呢? 域名解析失败: 当您输入一个域名,但无法获取到与之对应的IP地址,导致无法访问相应的网…...
告别依赖地狱:用Buildroot一键搞定OpenCV 4.x在ARM板上的交叉编译环境
告别依赖地狱:用Buildroot一键搞定OpenCV 4.x在ARM板上的交叉编译环境 在嵌入式视觉应用开发中,OpenCV几乎是不可或缺的计算机视觉库。但当开发者尝试将OpenCV部署到ARM架构的嵌入式设备时,往往会陷入依赖库编译的泥潭——FFmpeg、libjpeg、l…...
从外卖配送看算法实战:Python+NetworkX解决简化版VRP问题
外卖配送路径优化实战:用PythonNetworkX解决简化版VRP问题 中午12点,城市里的外卖订单如潮水般涌来。配送员小张的手机上瞬间出现了8个不同方向的订单,他盯着地图上分散的标记点皱起了眉头——怎样才能用最短的时间送完所有外卖?这…...
HY-Motion 1.0保姆级教程:解决CUDA OOM、Prompt截断等常见问题
HY-Motion 1.0保姆级教程:解决CUDA OOM、Prompt截断等常见问题 1. 前言:为什么需要这篇教程 你是不是也遇到过这样的情况:好不容易下载了HY-Motion 1.0这个强大的3D动作生成模型,准备大展身手,结果一运行就遇到CUDA内…...
MATLAB中扩展卡尔曼滤波与无迹卡尔曼滤波源代码:一键运行,误差对比及显示最大误差数字图像程...
MATLAB编写的EKF和UKF滤波程序源代码 扩展卡尔曼滤波、无迹卡尔曼滤波的MATLAB程序,有误差对比图像和最大误差数字的显示。 只有一个m文件,打开就能运行。 带中文注释。直接双击EKFUKFComparison.m就能看到两个滤波器在非线性系统里的较量。这个文件里塞…...
浙政钉应用监控埋点参数(bid, sapp_id)到底去哪找?一份给开发者的沟通指南
浙政钉应用监控埋点参数获取实战指南:从沟通到落地的全流程解析 在政务数字化进程中,浙政钉作为重要的政务协同平台,其应用监控埋点数据的准确采集直接影响着后续的数据分析和决策支持。然而,许多开发团队在实际项目中常常陷入参数…...
ICML 2023亚马逊论文速览:自适应计算与差分隐私
机器学习 某机构在ICML 2023会议论文速览 在一系列主题中,某机构的研究融合了理论与实践的探索。 会议 ICML 2023 在今年的国际机器学习大会(ICML)上,某机构的研究人员发表了多篇关于赌博机问题和差分隐私的论文,这两个…...
人脸检测开源生态新成员:cv_resnet101_face-detection_cvpr22papermogface ModelScope集成详解
人脸检测开源生态新成员:cv_resnet101_face-detection_cvpr22papermogface ModelScope集成详解 1. 项目概述 今天要介绍的是一个特别实用的人脸检测工具——基于MogFace模型开发的本地高精度人脸检测系统。这个工具解决了PyTorch新版本加载旧模型的兼容性问题&…...
零基础入门:时空预测的系统化学习笔记
零基础入门:时空预测的系统化学习笔记 很多刚接触时序与时空预测领域的朋友,常常会陷入两个极端:要么一上来就硬啃复杂的 SOTA 模型,连基础算子都没搞懂就想复现顶会成果,最后处处碰壁;要么只停留在基础概…...
从座舱芯片到指尖触控:聊聊高通8155/8295上那个你可能没注意到的Virtio Touch框架
从座舱芯片到指尖触控:高通8155/8295中的Virtio Touch框架解析 当你的手指在车载中控屏上滑动时,一组坐标数据正以微秒级速度穿越两个操作系统——这背后是高通座舱芯片中鲜为人知的Virtio Touch框架在发挥作用。作为连接QNX Hypervisor与Android系统的神…...
Comsol热流耦合拓扑优化:最大化放热量与功率耗散的探索
Comsol热流耦合拓扑优化。 目标函数采用最大化放热量和功率耗散。在工程领域,热流耦合问题一直是研究的重点,尤其是如何通过拓扑优化来实现特定目标,比如最大化放热量和功率耗散,这对于提高系统性能至关重要。而Comsol作为一款强大…...
