从快到慢学习Git指令
Git是现在最流行的版本控制工具之一。无论是在开源社区还是企业软件开发中,Git都扮演着至关重要的角色。本文将根据不同的需求,分别提供快速上手和深入学习Git的指南。
如果你只想下载代码
如果你只是想下载GitHub或其他代码仓库的代码,那你只需要了解以下两个命令:
git clone: 从远程仓库克隆一个本地副本。例如,git clone https://github.com/username/repo.git会将仓库repo克隆到你的本地计算机。git pull: 从远程仓库获取最新的修改并合并到本地。例如,在你克隆的仓库目录下运行git pull,就会将远程的最新修改拉取到本地并自动合并。
如果你需要使用Git进行简单的开发
如果你需要使用Git进行开发,并且你们维护的Git分支较为简单,那你需要了解以下命令以及一些基本的Git管理原则:
a. 你需要了解Git最基本的结构

workspace:工作区
staging area:暂存区/缓存区
local repository:版本库或本地仓库
remote repository:远程仓库
工作区存放着你电脑本地的代码。暂存区存放着你暂时放到一边的代码(当你暂时不希望你修改的一部分代码出现在你本地的代码中,但是后续可能又会用到的代码,即可使用暂存区先将其存起来)(可以理解为暂存区中的代码已经脱离了你代码原本存放的位置)。本地仓库存放着你已经提交了的代码是远程仓库与你本地代码间的桥梁。远程仓库为存放在服务器上的Git代码仓库,如github上的代码就是存放在github服务器上的,对你本机来说github服务器就是你本地的远程仓库。
b. 你需要简单了解Git的分支结构
你需要知道,Git的主要作用是对代码进行版本管理,其根本目的和作用就是管理你每一次对工程代码的修改,以方便出问题时对之前提交的代码进行分析,并进行回退;并且当你参与团队对一个项目进行开发时,可以保证你们团队成员之间写的代码不会出现冲突(比如你的代码被你伙伴修改了,然后当你/你同伴提交代码时Git就会阻止这种冲突的提交并提示你/你同伴)这样就能保证团队间开发的代码都是各种功能块的这样就保证了团队间能够 有序的进行代码的开发。
c. 你需要记住Git的这些基本指令
git init: 初始化一个新的Git仓库。在你的项目目录下运行git init,就会在该目录下创建一个新的Git仓库。git status: 查看当前Git仓库的状态。这个命令会显示哪些文件被修改了,哪些文件还没有被提交。git add: 将文件添加到暂存区。例如,git add file.txt会将file.txt添加到暂存区。git commit: 将暂存区的修改提交到本地仓库。例如,git commit -m "Add new feature"会将暂存区的修改提交,并添加提交信息"Add new feature"。git push: 将本地的修改推送到远程仓库。例如,git push origin main会将本地的main分支推送到远程仓库的main分支。git fetch: 从远程仓库获取最新的修改,但不合并到本地。这个命令可以让你在合并前查看远程的修改。git rebase: 将一个分支的修改合并到当前分支。例如,git rebase main会将当前分支的修改以main分支为基础进行合并。git reset: 撤销修改。例如,git reset --hard HEAD~1会撤销最近一次的提交并删除工作区的改动。git clean: 删除未跟踪的文件。例如,git clean -fd会删除所有未跟踪的文件和目录。git restore: 撤销工作区的修改。例如,git restore file.txt会撤销file.txt在工作区的修改。- 你说得对,我漏掉了
git revert这个重要的命令。让我来补充一下: git revert: 撤销某次提交引入的改动,但不删除这个提交,而是生成一个新的提交来撤销更改。这个命令通常用于在公共分支上撤销一个已经推送的提交。例如,git revert HEAD会撤销最近一次提交引入的改动。
d. 你还需要了解一些Git管理的基本原则:
- 提交应该是原子性的: 一次提交应该完成一个完整的改动。这使得代码更容易理解和回退。
- 总是在提交前拉取: 在提交前运行
git fetchandgit rebase可以尽量减少合并冲突。 - 妥善地使用分支: 利用分支可以让你的开发工作与主线开发分开,这可以减少冲突。
- 写清晰的提交信息: 好的提交信息可以让其他人(包括未来的你)更容易理解这次提交的内容。
如果你需要使用Git进行复杂的开发
如果你们的代码分支较为复杂,你就需要深入学习Git的一些特性。除了上述的命令,你还需要掌握以下命令:
git branch: 列出、创建或删除分支。例如,git branch会列出所有的本地分支。git branch [branch_name]: 创建一个新的分支。例如,git branch new-feature会创建一个名为new-feature的新分支。git checkout: 切换分支或恢复工作区文件。例如,git checkout new-feature会切换到new-feature分支。git reset [commit]: 将当前分支的末端移动到指定的提交。例如,git reset HEAD~3会将当前分支的末端移动到前三个提交之前。git diff: 显示两个提交或工作区之间的差异。例如,git diff HEAD~1会显示最近一次提交和上一次提交的差异。git merge [branch_name]: 将指定的分支合并到当前分支。例如,git merge new-feature会将new-feature分支合并到当前分支。git cherry-pick [commit]: 选择一个提交,合并到当前分支。例如,git cherry-pick abc123de会将提交abc123de合并到当前分支。git rebase -i: 交互式地修改提交历史。这可以用来合并提交,修改提交信息,删除提交等。git stash: 将当前工作状态保存起来,以便后续恢复。例如,git stash会保存当前的修改,然后将工作区恢复到上一次提交的状态。git tag: 给某个提交打上标签,通常用于标记发布版本。例如,git tag v1.0会给当前提交打上v1.0的标签。git submodule: 管理项目中的其他Git仓库,常用于引用其他项目的代码。git bisect: 通过二分查找来定位引入Bug的提交。git blame: 查看文件的每一行是由谁修改的。git reflog: 查看操作日志,常用于恢复误删的提交。
除了这些命令,你还需要深入理解Git的一些原理和特性:
- Git的数据模型: Git本质上是一个内容可寻址的文件系统,并在此基础上提供了版本控制功能。理解Git的数据模型可以帮助你更好地理解Git的操作。
- 分支模型: Git的分支是轻量级的,创建和切换分支几乎是瞬间完成的。合理地使用分支可以使你的开发工作更有条理。常见的分支模型有Git Flow, GitHub Flow等。
- 远程仓库: Git是一个分布式的版本控制系统,每个Git仓库都可以有多个远程仓库。了解如何管理远程仓库可以让你更好地与其他人协作。
- Git钩子: Git提供了在特定事件发生时自动运行脚本的能力,这被称为"钩子"。钩子可以用于自动化测试,部署等任务。
下面是一些例子,展示了如何在实际开发中使用这些知识:
-
创建一个新的特性分支并合并到主分支:
# 在main分支上 git checkout main git pull git checkout -b new-feature# 在new-feature分支上进行开发 git add . git commit -m "Implement new feature"# 切换回main分支 git checkout main git pull# 合并new-feature分支 git merge new-feature git push -
修复一个Bug并将修复应用到多个分支:
# 在main分支上 git checkout main git pull# 创建一个修复Bug的分支 git checkout -b fix-bug# 修复Bug并提交 git add . git commit -m "Fix bug"# 切换到需要修复的分支,例如develop分支 git checkout develop git cherry-pick fix-bug git push -
使用Git钩子自动运行测试:
在
.git/hooks目录下创建一个名为pre-commit的文件,内容如下:#!/bin/shnpm test给这个文件添加执行权限:
chmod +x .git/hooks/pre-commit现在,每次你执行
git commit时,都会先自动运行npm test。如果测试失败,提交将被中止。
未完待续。。。
相关文章:
从快到慢学习Git指令
Git是现在最流行的版本控制工具之一。无论是在开源社区还是企业软件开发中,Git都扮演着至关重要的角色。本文将根据不同的需求,分别提供快速上手和深入学习Git的指南。 如果你只想下载代码 如果你只是想下载GitHub或其他代码仓库的代码,那你只需要了解以下两个命令: git clo…...
传奇游戏发布渠道
传奇游戏发布渠道 回答:游戏发布平台|手机游戏发布平台 传奇游戏发布渠道作为游戏开发商直接控制的信息传播途径,其安全性自然有着较高的保障。首先,渠道通常会采用先进的加密技术和安全协议来保护数据传输过程中的安全,防止信息…...
如何有效阅读科研论文【方法论】
如何读论文【论文精读1】_哔哩哔哩_bilibili 如何有效阅读科研论文 科研论文是了解学术领域最新研究成果和技术发展的重要途径。有效地阅读论文不仅能够帮助我们掌握前沿知识,还能提升自己的研究能力。本文将介绍一种系统的论文阅读方法,并通过具体的步…...
【揭秘】层层加码,竟能加速渠道营销数字化?-eBest
国潮饮料品牌在eBest RTM系统的支持下,已经将数字化贯彻到每一个销售环节,且看eBest如何通过“层层加码”,进一步加速该饮料品牌渠道数字化进程,实现弯道超车? “一箱四码”垛码 五码实现渠道数字化 为提高营销和数字…...
基于WAMP环境的简单用户登录系统实现(v3版)(持续迭代)
目录 版本说明 实现环境: 流程逻辑框图: 数据库连接 登录页面:login.html 登录处理实现:doLogin.php 用户欢迎页面:welcome.php 密码修改页面:change_password.html 修改处理:doChangePa…...
大语言模型与多模态大模型loss计算
文章目录 前言一、大语言模型loss计算1、loss计算代码解读2、构建模型输入内容与label标签3、input_ids与labels格式 二、多模态大模型loss计算方法1、多模态loss计算代码解读2、多模态输入内容2、大语言模型输入内容3、图像embending如何嵌入文本embeding 前言 如果看了我前面…...
线上研讨会 | CATIA助力AI提升汽车造型设计
报名链接: 2024探索之旅第二季...
Unity新输入系统 之 InputAction(输入配置文件最基本的单位)
本文仅作笔记学习和分享,不用做任何商业用途 本文包括但不限于unity官方手册,unity唐老狮等教程知识,如有不足还请斧正 首先你应该了解新输入系统的构成结构:Unity新输入系统结构概览-CSDN博客 Input System - Unity 手册 1.In…...
【3】MySQL的安装即启动
目录 一.下载 二.安装 三.启动 一.下载 二.安装 安装MySQL时遇到的Initializing database错误:推荐下面的博客(简单就是电脑名不要出现中文) https://blog.csdn.net/m0_52775858/article/details/123705566 三.启动 PS:cmd要…...
变“金点子”为“好应用”,合合信息智能文档处理技术助力大学生探索AI创新边界
谈“糖”色变、追求养生、低卡生活……这些热门词汇频频在社交媒体上掀起讨论热潮。有这样一批年轻人不但捕捉到了这些词汇背后真实的用户需求,并且正在利用AI技术寻找解决之道。 近日,“中国大学生服务外包创新创业大赛”(以下简称“服创大…...
央行重提P2P存量业务化解,非吸案开始翻旧账?
沉寂已久的P2P,又突然以另一种意想不到的形式回到公众视野了。2018年全国P2P坍塌式暴雷,平台老板“跑路”“判刑”的消息一时间你方唱罢我登场。当年的某凰金融、某租宝、某信贷等赫赫有名的网贷平台传出的消息无非两类——查封或跑路,这几年…...
8B 端侧小模型 | 能力全面对标GPT-4V!单图、多图、视频理解端侧三冠王,这个国产AI开源项目火爆全网
这两天, Github上一个 国产开源AI 项目杀疯了!一开源就登上了 Github Trending 榜前列,一天就获得将近600 star。 这个项目就是国内大模型四小龙之一面壁智能最新大打造的面壁「小钢炮」 MiniCPM-V 2.6 。它再次刷新端侧多模态天花板…...
汽车免拆诊断案例 | DAF(达富)汽油尾气处理液故障警示
故障现象 距离我上次在货卡上工作已经有一段时间了,让它们在道路上保持安全行驶是非常重要的。因此,当故障警示灯亮起时,我们需要迅速找到问题方向以及排除故障。 车辆的仪表板亮起多个故障灯以及警示灯,我们需要用解码器查找触…...
图论算法
目录 1.引言 2.图论基础 3.Dijkstra算法 3.1 算法背景与概述 3.2 算法原理 3.3 算法步骤 3.4 示例说明 3.5 复杂度分析 3.6 优缺点及应用场景 4.Floyd-Warshall算法 4.1 算法背景与概述 4.2 算法原理 4.3 算法步骤 4.4 示例说明 4.5 复杂度分析 4.6 优缺点及应用…...
手抖跟饮食有关系吗?
手抖,医学上称为震颤(tremor),是指手部或其他身体部位的不自主抖动。饮食在某种程度上与手抖相关,但并非唯一的因素。以下是饮食与手抖之间可能存在的关系: 1. 咖啡因摄入:咖啡因是一种刺激神经…...
59. 螺旋矩阵 II
59. 螺旋矩阵 II 题目链接:59. 螺旋矩阵 II 代码如下: class Solution { public:vector<vector<int>> generateMatrix(int n) {if(n1){return {{1}};}vector<vector<int>> res(n,vector<int>(n));int num1;int left0,r…...
shiro注解不起作用:shiro进行权限校验时,@RequireRoles(“admin“)注解不起作用的解决方法
今天在写前后端分离项目时,用jwt加shiro进行登录权限校验时,RequireRoles("admin")注解不起作用,记录一下。 前提:数据库里面的user_type代表用户类型 :0普通用户 ;1:专家࿱…...
ZABBIX邮件监控发送信息
前言:本地邮箱,第三方邮箱,第三方邮箱加脚本 1、本地邮箱测试 #cd /home # ls laiyingx [rootzabbix ~]# vim /etc/postfix/main.cf /mydestination $myhostname, localhost.$mydomain, localhost,$mydomain [rootzabbix ~]# systemctl…...
Java核心 - 减少循环次数的必要性及其实现方法
作者:逍遥Sean 简介:一个主修Java的Web网站\游戏服务器后端开发者 主页:https://blog.csdn.net/Ureliable 觉得博主文章不错的话,可以三连支持一下~ 如有疑问和建议,请私信或评论留言! 前言 在 Java 编程中…...
国产麒麟系统下U盘只读文件系统问题
问题描述 国产麒麟系统下U盘只读文件系统问题 解决方案: 提示:卸载U盘,然后重新挂载,修复。 1.插入U盘并用df -h查看U盘信息: 命令:df -h 找到自己的U盘信息(可以根据容量大小来找)ÿ…...
React Native 开发环境搭建(全平台详解)
React Native 开发环境搭建(全平台详解) 在开始使用 React Native 开发移动应用之前,正确设置开发环境是至关重要的一步。本文将为你提供一份全面的指南,涵盖 macOS 和 Windows 平台的配置步骤,如何在 Android 和 iOS…...
高危文件识别的常用算法:原理、应用与企业场景
高危文件识别的常用算法:原理、应用与企业场景 高危文件识别旨在检测可能导致安全威胁的文件,如包含恶意代码、敏感数据或欺诈内容的文档,在企业协同办公环境中(如Teams、Google Workspace)尤为重要。结合大模型技术&…...
Linux-07 ubuntu 的 chrome 启动不了
文章目录 问题原因解决步骤一、卸载旧版chrome二、重新安装chorme三、启动不了,报错如下四、启动不了,解决如下 总结 问题原因 在应用中可以看到chrome,但是打不开(说明:原来的ubuntu系统出问题了,这个是备用的硬盘&a…...
【HarmonyOS 5 开发速记】如何获取用户信息(头像/昵称/手机号)
1.获取 authorizationCode: 2.利用 authorizationCode 获取 accessToken:文档中心 3.获取手机:文档中心 4.获取昵称头像:文档中心 首先创建 request 若要获取手机号,scope必填 phone,permissions 必填 …...
DeepSeek 技术赋能无人农场协同作业:用 AI 重构农田管理 “神经网”
目录 一、引言二、DeepSeek 技术大揭秘2.1 核心架构解析2.2 关键技术剖析 三、智能农业无人农场协同作业现状3.1 发展现状概述3.2 协同作业模式介绍 四、DeepSeek 的 “农场奇妙游”4.1 数据处理与分析4.2 作物生长监测与预测4.3 病虫害防治4.4 农机协同作业调度 五、实际案例大…...
今日学习:Spring线程池|并发修改异常|链路丢失|登录续期|VIP过期策略|数值类缓存
文章目录 优雅版线程池ThreadPoolTaskExecutor和ThreadPoolTaskExecutor的装饰器并发修改异常并发修改异常简介实现机制设计原因及意义 使用线程池造成的链路丢失问题线程池导致的链路丢失问题发生原因 常见解决方法更好的解决方法设计精妙之处 登录续期登录续期常见实现方式特…...
基于SpringBoot在线拍卖系统的设计和实现
摘 要 随着社会的发展,社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发成为必需。 在线拍卖系统,主要的模块包括管理员;首页、个人中心、用户管理、商品类型管理、拍卖商品管理、历史竞拍管理、竞拍订单…...
探索Selenium:自动化测试的神奇钥匙
目录 一、Selenium 是什么1.1 定义与概念1.2 发展历程1.3 功能概述 二、Selenium 工作原理剖析2.1 架构组成2.2 工作流程2.3 通信机制 三、Selenium 的优势3.1 跨浏览器与平台支持3.2 丰富的语言支持3.3 强大的社区支持 四、Selenium 的应用场景4.1 Web 应用自动化测试4.2 数据…...
一些实用的chrome扩展0x01
简介 浏览器扩展程序有助于自动化任务、查找隐藏的漏洞、隐藏自身痕迹。以下列出了一些必备扩展程序,无论是测试应用程序、搜寻漏洞还是收集情报,它们都能提升工作流程。 FoxyProxy 代理管理工具,此扩展简化了使用代理(如 Burp…...
Java详解LeetCode 热题 100(26):LeetCode 142. 环形链表 II(Linked List Cycle II)详解
文章目录 1. 题目描述1.1 链表节点定义 2. 理解题目2.1 问题可视化2.2 核心挑战 3. 解法一:HashSet 标记访问法3.1 算法思路3.2 Java代码实现3.3 详细执行过程演示3.4 执行结果示例3.5 复杂度分析3.6 优缺点分析 4. 解法二:Floyd 快慢指针法(…...
