git的基本原理

article/2025/9/11 18:15:37

刚刚接触到git和github,整理一部分相关原理帮助自己理解git命令和本地-远程的操作。
我们将这部分学习分为三部分:(1)本地仓库相关操作(2)远程仓库相关操作(3)本地-远程交互操作
本地仓库相关操作:
1、当我们下载git 后,打开git bash,通过git clone将远端创建的仓库复制到本地,此时一个本地仓库创建完成。此时,在本地将有一个.git的文件夹形成,里面包含多个文件,其中查看几个文件中的内容可以帮助我们理解git的一些命令,如objects中为存储的blob对象,里面包含对应每次操作的一种算法的结果(哈希值),HEAD类似一个指针,指向工作区的分支,总是指向最新的commit,logs包含了commit的日志,config为配置文件。
2、在本地仓库文件夹内的空白处打开git bash,我们进入默认的主分支,如main_branch,自此,我们开始了在本地仓库的一些列操作。本地仓库的文件位置可以分为三个区域,(1)工作区(2)索引区(3)仓库,他们之间的关系为
在这里插入图片描述
查看文件的状态git status,不同位置的文件显示的颜色不同。我们在创建或者修改一个文件后,git add file到索引区,git commit -m 到本地仓库中。
3、branch:在将远程文件下拉到本地或者在本地进行新文件创建时,尽量不要在主分支上进行操作,因为一个大的项目,它的主流程将构成一个主分支,而每个功能的实现构成多个分支,不同的分支由不同的设计者完成,对主流程的更改可能会影响到其他的设计者的后续设计,并且更改主分支后合并分支时还需考虑有无冲突的问题。因此可以在其它分支上修改完成后,再合并到主分支上。
4、对于一个新手,和内存占用相关的内容比如文件的压缩,垃圾文件的处理暂时先不考虑。

远程仓库相关操作:
1、仓库的创建:远程操作指的是github中的操作,项目发起后,可创建对应的仓库,并创建一个分支作为主分支,后续其他操作均基于这个主分支进行。
2、从本地push远程时,不能再使用github账号和密码的连接方式,可使用token验证。
3、将文件从本地推到远程仓库后,远程仓库中会出现何人何时推送了分支文件的信息,操作者通过pull requests递交将该分支文件合并到主分支的请求并附带文件内容说明,审批通过后,该分支合并到主分支上,该分支名可删除,也可以保留便于追溯。

本地-远程交互操作:
1、git clone:当远程创建新的仓库后,使用该命令同步到本地,开始本地仓库的后续操作。
2、merge的使用,我们在完成一个项目时,会需要多个分支分别完成不同的功能,再合并到主分支上。分支的合并分为三种情况:(1)fast forward:在主分支的最新一次commit时,创建新分支dev并进行commit,然后merge到主分支,此时可在主分支直接使用git merge dev 。(2)3 way merge:主分支创建新分支dev后,主分支和dev分支分别进行过commit,但是commit中的文件不冲突,可使用git merge。(3)带冲突的3 way merge:当创建的新分支dev和主分支分别commit时,commit的文件发生了冲突,使用git merge进行合并时会提示发生了冲突,此时要先解决冲突,再进行合并,可采用在编辑器中删除不需要内容的方法进行解决,在实际中遇到后再进行这部分内容的补充。还有一个命令可以将3 way merge的形式更改为fast forward形式,那就是git rebase,该命令将创建新分支dev后的主分支上的commit信息合并到dev分支上,这样dev分支就带有主分支最新commit,切换到主分支后,可以merge,但这过程可能会有冲突,遇到实际情况后再补充该内容。但是在主分支上不要使用git rebase命令。
3、git pull:项目进行过程中,从远程仓库拉代码到本地时使用的命令,将远端仓库的分支内容拉到本地仓库,并与本地仓库合并。提到合并,就涉及到合并的3种方式,因此在使用git pull时也要确定是否有冲突。此时还有另外一个拉取的命令git fetch,git pull相当于git fetch和git merge的总和。那么在操作中,如果我们确定肯定下拉的分支与本地分支无冲突,我们就使用git pull,若不确定是否有冲突,我们就使用git fetch+git diff +git merge。
4、git push:本地操作完成后推送到远程仓库的命令。可先通过git branch -vv查看本地和远程分支情况,若首次push新分支,则使用git push origin -u new branch,若同步分支,则可直接git push。

总结最简单的git的使用流程为:git clone/pull→git branch(dev)→git add→git commit→git branch(main)→git push


http://chatgpt.dhexx.cn/article/YA4AInpi.shtml

相关文章

Git原理及操作简介

Git原理及操作简介 一、Git是什么 Git是目前世界上最先进的分布式版本控制系统 工作原理 / 流程: Workspace:工作区 Index / Stage:暂存区 Repository:仓库区(或本地仓库) Remote:远程仓库 二、SVN与Git的最主要的区别? SVN是集中式版本控制系统,版本库是集中放在中…

Git 工作原理

Git 工作原理 GIt简介Git 的基本原理Git的目录结构Git对象在之前我们提到过,Git是一套内容寻址(content-addressable)文件系统,那么Git是怎么进行寻址呢?Git对象的类型包括:BLOB、tree对象、commit对象。 对…

一文搞明白GIT——Git原理解析与常用命令

工作中经常用git,但是不少命令经常使用出现各种各样的问题,也不太理解其中的原理。今天专门总结一下git的原理,理解原理之后想实现什么样的功能直接找相应的命令即可。如有错误和不足,欢迎指正! 一、 工作区 使用git…

Git 原理详解及实用指南

Git 原理详解及实用指南 什么是版本控制系统(VCS) 很多人认为 Git 难以理解的第一个门槛在于:所谓的「Git 是一个分布式版本控制系统」这句话的具体含义不够清楚。其实分布式版本控制系统(Distributed Version Control System - …

图解git原理

用了这么久git,你有没有想过git的原理是什么?为什么git做回退这么快?创建、切换分支也这么快?git的工作区、暂存区、本地仓库、远程仓库都分别对应怎样的实体?打开一个git仓,看看目录下的.git文件夹&#x…

Git 的原理

文章目录 什么是 Git?版本库是由什么构成的版本库(项目文件夹)的构成版本库(对象数据库)的结构提交的组成SHA1 算法 总结 暂存区什么样的文件,不应该上传到版本库中?查看暂存区清空暂存区选择性…

Git学习之git原理

git对象 当我们使用git进行版本管理时,git会将我们的文件和目录结构转化成git方便操作的数据(git对象),然后再对这些git对象进行管理,从而实现版本管理的目的,这些git对象存放在git的对象库中。 我们眼中的文件会被git转化成&qu…

Git 必知必会:原理剖析

作为程序员,最常用的版本管理工具便是 Git。但我相信大多数人和我一样,从没有认真了解过其具体实现的原理。但了解 Git 的原理,能有助于我们工作更好的使用 Git。下面,让我们一起来了解 Git 中的一些概念,以及实现。 一…

git 原理简介

文章目录 关于版本控制分为三种版本控制方案本地版本控制集中化的版本控制分布式版本控制 git基本底层原理git提交流程原理Git的引用(分支)git log原理总结参考链接 关于版本控制 什么是“版本控制”?我为什么要关心它呢? 版本控制是一种记录一个或若干文…

【转】以太坊钱包分析与介绍

林修平在亚太区以太坊社区培训与交流Meetup深圳站上跟我们分享了他对以太坊各种钱包模式的介绍,还分析了Parity多签名钱包安全事件的技术原因。昨日,EthFans得到作者授权,分享他的PPT。鉴于PPT较长,为保证阅读体验,编者…

币久网好像暂停ZEC交易了,各位的ZEC币暂时不要转入币久网了

今天突然发现币久网不能交易ZEC了,然后看到了官方公告,难不成ZEC也是P网的? 各位如果需要其他的钱包地址,比如Windows本地Zcash钱包地址,可以移步去我的其他博文看看 http://blog.csdn.net/squirrel1311/article/detai…

『0001』 - 如何通过 MyEtherWallet 创建钱包以及如何通过 Ethereum Wallet 和 MetaMask 恢复钱包账号

视频教程 来源: 黎跃春区块链博客 学习目标 钱包介绍创建钱包发送和接收以太币恢复钱包如何获取以太币 钱包介绍 Ethereum Wallet 钱包 开启Ethereum智能合约开发(Smart Contract)最快的方式就是Ethereum Wallet,它支持Windows, MacOSX 和 Linux开发…

web3.js链接以太坊并查询钱包u余额

web3.js链接以太坊并查询钱包USDT余额 环境:一、链接以太坊主网:二、创建一个ABI那么该如何获取ABI? 三、查询代码四、输出结果五、整体代码 环境: web3.js版本:6.14.15 不会安装以及使用web3.js的小伙伴看:https://blog.csdn.net/qq_45844443/article/details/124330035 一…

Clickhouse 以太坊分析:基础交易数据清洗

概述 读者可前往我的网站获得更好的阅读体验。 笔者最近遇到了许多关于数据分析的文章,大部分都使用了 Dune 等 SaaS 工具,这些工具往往提供了清洗后的区块链数据和数据库分析工具。对于大部分数据分析师而言,这些工具可以应对一系列复杂的…

DApp创建本地钱包并实现签名转账(BSC,Polygon,ETH)

文章目录 1. 项目准备2. 钱包相关概念3.随机创建一个钱包4.根据助记词导入钱包5.根据keystore导入钱包6.签名转账 1. 项目准备 安装ether.js npm install --save ethers引入ether.js:的三种方法 es3: var ethers require(‘ethers’);es5/es6 const ethers require(‘et…

使用ethers.js开发以太坊Web钱包 - 将私钥保存在客户端

为什么需要 Keystore 文件 通过这篇文章理解开发HD 钱包涉及的 BIP32、BIP44、BIP39,私钥其实就代表了一个账号,最简单的保管账号的方式就是直接把私钥保存起来,如果私钥文件被人盗取,我们的数字资产将洗劫一空。 Keystore 文件就…

CEX暴雷怎么办 一文读懂加密钱包产业现状

你的钱其实并不在你的借记卡里,借记卡只是授权你的银行帐户向银行系统数据库发送交易。同样,你的代币也并不在你的加密钱包里。加密钱包只是持有私有密钥以证明对数字资产的所有权,而这些资产是存储在公共区块链网络上的。私钥能让你对加密钱…

区块链隐私保护文献 An Efficient NIZK Scheme for Privacy-Preserving Transactions over Account-Model Blockchain

读:An Efficient NIZK Scheme for Privacy-Preserving Transactions over Account-Model Blockchain 本文的目的 找到一种适用于轻量级设备及智能合约的高效零知识证明 前人的工作 不能直接迁移UTXO模型的隐私保护方案的原因 在考虑用户余额的隐私时&#xff0…