虚拟项目学习git/github原理与基本操作1

[Github项目安装]基于深度学习的原神自动钓鱼实现记录 基于深度学习的原神自动钓鱼实现记录与环境搭建bug解决方案 阅读详情

本人为了更好的学习git的基本操作,利用github给提供的良好的服务,通过一个虚拟项目来熟练git的基本操作与原理。


1. Git基础知识


在git中每一次版本信息都是对所有文件的一次快照,保存了指向这个快照的索引。


对于任何一个文件,git内部只有三种状态,已提交(committed),已修改(modified)和已暂存(staged).

已提交表示该文件已经被安全地保存在本地数据库中了;已修改表示修改了某个文件,但还没有提交保存;已暂存表示把已修改的文件放在下次提交时要保存的清单中。

文件的三种状态的转换可以看图,(手工画的)



每个项目都有一个 git 目录,它是 Git 用来保存元数据和对象数据库的地方。该目录非常重要,每次克隆镜像仓库的时候,实际拷贝的就是这个目录里面的数据。

从项目中取出某个版本的所有文件和目录,用以开始后续工作的叫做工作目录。这些文件实际上都是从 git 目录中的压缩对象数据库中提取出来的,接下来就可以在工作目录中对这些文件进行编辑。

所谓的暂存区域只不过是个简单的文件,一般都放在 git 目录中。有时候人们会把这个文件叫做索引文件,不过标准说法还是叫暂存区域。


说明:git是一个分布式的版本控制系统,也就是在你的本地有完整的一个仓库的备份,所以你几乎所有的操作都可以在本地完成,处理速度非常快,因为本地有完成的服务器数据镜像。

暂存区指的是文件已经修改,并且添加的版本控制追踪中,在下一次提交的时候即可提交到代码仓库中。 

之所以有暂存区,是因为git的所有存入仓库的操作都是针对暂存区的文件进行的。

很多刚刚接触git的会被git的 本地数据库(git directory)弄晕,因为git本地保存了一个仓库镜像,所以你的所有操作都是对本地这个仓库进行操作的。这么理解就非常方便了。

git directory 经常被称为HEAD,就是当前的工作的分支,以后会经常遇到HEAD这个词。

这里也可以这么理解,就是git的本地仓库分为三颗“树”,一个是工作目录,一个是暂存区,成为索引区,记录下一次提交到仓库的文件,还有就是HEAD了,相当与仓库的本地备份。


2. git安装


这个是很简单的问题,请参考:http://yunsim.com/ch1-4.html


3. git基本配置

基本上需要配置的就是用户名以及邮箱,用来在提交代码的时候记录用户信息。
$ git config --global user.name "John Doe"
$ git config --global user.email johndoe@example.com

按照上面的说明就能完成github的基本配置。
然后利用git config --list命令查看git 配置是否正确:
watkins@watkins:~$ git config --list 
user.name=weixingstudio
user.email=watkins.song@gmail.com
credential.helper=cache --timeout=7200
github.user=weixingstudio
crediential.helper=cache
watkins@watkins:~$ 


其他的配置信息可以省略,也可以根据自己需求进行配置。
深入理解Git与GitHub:原理与实战指南 在软件开发的历史长河中,版本控制系统经历了从集中式向分布式的发展。最初,开发者们依赖于简单的文件备份和手动合并来跟踪代码变更。这种方法很快暴露出诸多问题,例如版本冲突、历史记录丢失、多人协作困难等。集中式版本控制系统(CVCS),如CVS和Subversion,试图解决这些问题,将所有代码维护在单一的服务器上。尽管这种集中式的做法提高了团队协作的效率,但其缺点也显而易见。任何对服务器的依赖都可能成为单点故障,一旦服务器发生故障,整个开发进程将被迫停滞。 阅读详情

相关推荐

Git和Github原理和操作

Git原理,github操作,命令行操作git,git的eclipse操作,虚拟机gitlab搭建

git及github的原理及使用(一)

目录 1、版本控制工具应具备的特点 2、版本控制工具分类 3、Git结构 4、代码托管中心 5、本地库和远程库的联系 6、安装Git 7、基本命令操作 8、版本管理 9、分支 10、Git原理 1、版本控制工具应具备的特点 协同修改:多人并行不悖的修改服务器端的同一个文件。 数据备份:不仅保存目录和文件的当前状态,还能够保存每一个提交过的历史状态。 版本管理:在保存每一...

qinshi965273101的专栏 3264

【yolov8】与yolov5的区别及改进详解

yolov8-----有点厉害的目标检测框架.

qq_44878985的博客 3万+

github原理剖析

一:目录结构 二:暂存区 三:git对象 Git 是一个内容寻址文件系统。这意味着,Git 的核心部分是一个简单的键值对数据库(key-value data store)。 你可以向该数据库插入任意类型的内容,它会返回一个键值,通过该键值可以在任意时刻再次检索(retrieve)该内容。 下面我们往git数据库存入一些数据 $ echo 'test content' | git hash-ob...

不会写代码的胖子 1087

基于ZYNQ7020芯片(黑金开发板AX7020)之AXI-FULL DDR的PL与PS交互操作。

在该工程中我们使用了PS端的串口接收功能,PS端串口接收和发送分别有一个64字节的FIFO,但是因为串口接收阈值设置为16,所以固定接收16个字节数据后才会发生中断。此测试工程得到以前知识的总结和各大网友的支持,只希望可以为学习的你更进一步,大家一起学习才是真的开心。加油,国产芯片之路。

landyjzlai的博客 3190

手把手教你用STM32实现三相永磁同步电机FOC控制(附代码)

本文详细介绍了基于STM32的三相永磁同步电机(PMSM)FOC控制实现方法,涵盖硬件设计、软件架构、参数调试及完整代码解析。通过磁场定向控制(FOC)算法,实现高效精准的电机控制,适用于工业自动化、电动汽车等领域。文章还提供了硬件选型建议、电流采样方案对比及PID参数整定技巧,助力开发者快速掌握FOC控制技术。

weixin_29168675的博客 96

GitHub的原理及应用详解(一)

在本系列文章中,我们将深入探讨GitHub的原理和应用,从基础的使用教程到高级的功能和工具的应用,帮助大家更好地理解和使用GitHub来管理和协作开发项目。无论是初学者还是有一定经验的开发者,都可以从本系列文章中获取到有价值的知识和实践经验。希望本系列文章能够帮助大家提高开发效率和团队合作能力,并在开发过程中取得更好的成果。

凛鼕将至的博客 3212

VSCode配置C/C++语言环境(小白专用保姆教程)(超细)

VSCode配置C/C++语言环境(小白专用保姆教程)(超细)

ITQWQ的博客 8229

GitHub到底是干什么的?使用场景是什么?底层原理是什么?

GitHub是全球最大的代码托管与协作平台,其核心价值在于将深度融合,为开发者提供从代码管理到项目全生命周期的一站式解决方案。

长风破浪会有时的博客 1万+

华为无线WiFi实战:基于802.1x与NPS的企业级认证部署指南

本文提供了一份详尽的华为无线WiFi企业级认证部署实战指南。通过整合802.1x协议与Windows NPS服务器,构建基于AD域账号的安全认证体系,彻底解决传统WiFi密码共享带来的安全风险。文章详细拆解了从NPS服务器配置、证书部署到华为AC端RADIUS模板、AAA方案、认证域及VAP模板调用的全流程,并附有终端连接测试与常见故障排查方法,助力企业实现高效、安全的无线网络接入管理。

weixin_29239661的博客 270

Unity FPS射击控制系统:数据驱动的武器行为解耦方案

在Unity第一人称射击(FPS)开发中,射击系统常因输入、状态、行为耦合导致连发异常、换弹冲突与网络同步失准。其本质是缺乏对‘武器行为’(如后坐力曲线、弹药逻辑)与‘射击控制’(如输入合法性校验、冷却调度)的正交分离。本方案基于ScriptableObject实现WeaponData数据资产化,配合ShootingController状态机服务,达成输入解耦、运行时参数可调、协程受控、网络预测友好等工程目标。适用于中大型FPS项目架构升级与数据驱动转型,尤其解决Unity InputSystem与物理反馈

weixin_30536861的博客 609

git图解:代码区域总结

本文背景,在实际项目中使用git已有一年多,发现不少同事虽然会使用常用git指令,但并不理解每个指令对应的作用原理。今天静下心总结下git 的基本理解:代码的存在区域;本文以实际项目出发,理清使用git过程中,代码的迁徙流程。 git跟传统的代码管理器(如:svn)不同, 主要区别在于git多了个本地仓库以及缓存区,所以即使无法联网也一样能提交代码。术语解释: 工作区间:即我们...

anku1776的博客 2254

AI:240-YOLOv8高效涨点 |Swin Transformer的主干网络替换与优化(附代码 + 详细修改步骤 +原理介绍)

YOLOv8作为目标检测领域的最新版本,在速度和精度之间取得了良好的平衡。然而,随着计算机视觉任务的复杂性不断增加,YOLOv8的标准主干网络(Backbone)在处理高分辨率图像或多尺度目标时,可能存在一定的局限性。为了进一步提升YOLOv8的性能,我们可以引入Swin Transformer替换其主干网络,以增强模型的全局感知能力和多尺度特征提取能力。本文将详细介绍如何在YOLOv8中用Swin Transformer替换原有的Backbone,提供代码示例,并深入探讨其中的原理和效果。

一键难忘的博客 3960

github代码复现/github项目部署/Github项目环境配置/跑通github项目/python机器学习跑通

github代码复现/github项目部署/Github项目环境配置/跑通github项目/python机器学习跑通。

2501_90824910的博客 2324

【WorkBuddy专栏51】Codex与WorkBuddy的底层基因——两条完全不同的AI智能体路线(上)

【WorkBuddy专栏51】Codex与WorkBuddy的底层基因——两条完全不同的AI智能体路线(上)

AI人人懂 2173

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

虚拟项目学习git/github原理与基本操作2

假设我们的虚拟项目是某财务系统,计算某个公司的纳税额等信息。 先在github中创建一个这个项目的repo, 命名为finance. 创建好这个repo以后,github给出了一些基本的命令如下: Create a new repository on the command line touch README.md git init git add README.md git commit

Work Hard, Play Harder! 2219

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

虚拟项目学习git/github原理与基本操作7

项目的分支管理 Git 中的分支,其实本质上仅仅是个指向 commit 对象的可变指针。Git 会使用 master 作为分支的默认名字。在若干次提交后,你其实已经有了一个指向最后一次提交对象的 master 分支,它在每次提交的时候都会自动向前移动。 如果你没有指定当前的分支的名字,git会自动的使用master作为当前的分支的名字,并且有个指针指向当前的工作的分支,每次提交项目

Work Hard, Play Harder! 1533

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

虚拟项目学习git/github原理与基本操作5

首先查看一下我们当前项目的提交历史,可以使用git log $ git log watkins@watkins:~/watkins/finance$ git log commit f2f51bd6eefdd115ec4be37540f97dfb81828ad1 Author: weixingstudio Date: Thu Jan 3 13:32:15 2013 +0800

Work Hard, Play Harder! 1944

虚拟项目学习git/github原理与基本操作8

假设目前我们的项目状态是这样的,如下图所示,分支的情况,当前已经把其他的分支都合并到了master分支。 接下来的操作都以上面图中最新的master分支为基础进行,前面的都不去讨论。 现在我们将master分支向前推进两步,分别添加写别的功能,在function2中。 如果不推送到远端的话,远端仓库的HEAD指针会比当前工程的指针落后一步。 所以把工程推送到远端。 然后再

Work Hard, Play Harder! 1747

虚拟项目学习git/github原理与基本操作3

获得远端仓仓库的代码,使用git clone  $ git clone git://github.com/schacon/grit.git 你可能已经注意到这里使用的是 clone 而不是 checkout。这是个非常重要的差别,Git 收取的是项目历史的所有数据(每一个文件的每一个版本),服务器上有的数据克隆之后本地也都有了。实际上,即便服务器的磁盘发生故障,用任何一个克

Work Hard, Play Harder! 1265

Linux 下建立 Git 与 GitHub 的连接并克隆到本地

Linux 下建立 Git 与 GitHub 的连接 Git 是一款开源的分布式版本控制系统,而 GitHub 是依托 Git 的代码托管平台。 GitHub 利用 Git 极其强大的克隆和分支功能,使得社区成员能够自由地参与到开源项目中去。 不过,在开始学习之前,你需要一个 GitHub 账号,以及一台能联网的 Linux 虚拟机。 ====准备工作==== 安装 Git ...

井底之蛙 2万+

虚拟项目学习git/github原理与基本操作4

新建一个新的文件,作为项目的第一个正式文件,因为当前我们的项目中已经包含一个README文件,这个时候做了一次项目的提交,所以我们现在项目的一个版本记录了当前版本的所有文件的镜像,我们称为C1。 查看当前项目状态: git status 会给出当前项目中的文件的状态,是未跟踪,还是已经修改没暂存,或者已经暂存,或者已经提交等状态。 watkins@watkins:~/w

Work Hard, Play Harder! 1546

利用GitHub高效学习Python:从环境搭建到项目实战的完整指南

开源协作是现代软件开发的核心实践,其原理在于通过版本控制系统(如Git)和代码托管平台(如GitHub)实现全球开发者的分布式协作与知识共享。这一模式的技术价值在于提供了海量、实时、高质量的真实项目代码库,极大地降低了学习门槛并加速了工程能力的培养。在Python学习领域,GitHub的应用场景尤为广泛,学习者可以通过阅读、运行和修改开源项目,将理论知识转化为解决实际问题的能力。本文聚焦于如何系统性地利用GitHub进行Python学习,涵盖了虚拟环境配置、Git操作、项目搜索与评估、代码深度阅读、以及从模

weixin_30780649的博客 362

虚拟项目学习git/github原理与基本操作6

在系统发布新版本或者有里程碑式的重大版本变化的时候,我们往往习惯给软件加个tag. 用来做标注与说明,同时tag的使用也比冗长的版本号要方便得多。 $ git tag 使用上面的命令可以查看当前系统的所有的tag. watkins@watkins:~/watkins/finance$ git tag v0.1 watkins@watkins:~/watkins/fin

Work Hard, Play Harder! 1460

虚拟项目学习git/github原理与基本操作10

衍合 把一个分支整合到另一个分支的办法有两种:merge(合并) 和 rebase(衍合)。在本章我们会学习什么是衍合,如何使用衍合,为什么衍合操作如此富有魅力,以及我们应该在什么情况下使用衍合。 简单的说衍合就是把当前的分支的变化在另外的一个分支上重演一次。 在我们以前的项目的基础上,把 master分支向前推进两步。 因为我在自己练习的时候已经将featur

Work Hard, Play Harder! 1317

windows 虚拟环境Django项目提交到GitHub总结

在写了很多次项目之后,今天突然决定重新写,并边写边提交到GitHub,简单总结一下经验,以及中间出现的一些错误。 由于之前没有经验,所以事先在GitHub上新建了仓库。正由于这一步,所以导致了后续的一系列事情。 由于之前在Windows系统上面提前安装了pip,所以个人建议,对于学习python,安装pip真的非常重要 一、创建虚拟环境         由于个人使用的是python3.6 ...

wuda19920215的博客 1007
上一篇: git - 简易指南
下一篇: 虚拟项目学习git/github原理与基本操作2
watkins
博客等级 码龄18年 1277粉丝 246原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值