Git使用基础篇

E哥的Git教程(一)热身篇 前言本教程试图解决的问题: 降低学习git的门槛。 用简单的场景带领大家循序渐进的快速掌握git用法。 让大家掌握在实战(真实互联网公司)中使用git的流程和步奏。 阅读详情

转自:http://www.open-open.com/lib/view/open1332904495999.html

Git使用基础篇

Git是一个分布式的版本控制工具,本篇文章从介绍Git开始,重点在于介绍Git的基本命令和使用技巧,让你尝试使用Git的同时,体验到原来一个版 本控制工具可以对开发产生如此之多的影响,文章分为两部分,第一部分介绍Git的一些常用命令,其中穿插介绍Git的基本概念和原理,第二篇重点介绍 Git的使用技巧,最后会在Git Hub上创建一个开源项目开启你的Git实战之旅

1、Git是什么

        Git在Wikipedia上的定义:它是一个免费的、分布式的版本控制工具,或是一个强调了速度快的源代码管理工具。Git最初被Linus Torvalds开发出来用于管理Linux内核的开发。每一个Git的工作目录都是一个完全独立的代码库,并拥有完整的历史记录和版本追踪能力,不依赖 于网络和中心服务器。

        Git的出现减轻了许多开发者和开源项目对于管理分支代码的压力,由于对分支的良好控制,更鼓励开发者对自己感兴趣的项目做出贡献。其实许多开源项目 包括Linux kernel, Samba, X.org Server, Ruby on Rails,都已经过渡到使用Git作为自己的版本控制工具。对于我们这些喜欢写代码的开发者嘛,有两点最大的好处,我们可以在任何地点(在上班的地铁 上)提交自己的代码和查看代码版本;我们可以开许许多多个分支来实践我们的想法,而合并这些分支的开销几乎可以忽略不计。

2、Git 1+1

        现在进入本篇文章真正的主题,介绍一下Git的基本命令和操作,会从Git的版本库的初始化,基本操作和独有的常用命令三部分着手,让大家能够开始使用Git。

        Git通常有两种方式来进行初始化:

        git clone: 这是较为简单的一种初始化方式,当你已经有一个远程的Git版本库,只需要在本地克隆一份,例如'git clone git://github.com/someone/some_project.git some_project'命令就是将'git://github.com/someone/some_project.git'这个URL地址的远程版 本库完全克隆到本地some_project目录下面

        git init和git remote:这种方式稍微复杂一些,当你本地创建了一个工作目录,你可以进入这个目录,使用'git init'命令进行初始化,Git以后就会对该目录下的文件进行版本控制,这时候如果你需要将它放到远程服务器上,可以在远程服务器上创建一个目录,并把 可访问的URL记录下来,此时你就可以利用'git remote add'命令来增加一个远程服务器端,例如'git remote add origin git://github.com/someone/another_project.git'这条命令就会增加URL地址为'git: //github.com/someone/another_project.git',名称为origin的远程服务器,以后提交代码的时候只需要使用 origin别名即可

3、Git的基本命令    

     现在我们有了本地和远程的版本库,让我们来试着用用Git的基本命令吧:

        git pull:从其他的版本库(既可以是远程的也可以是本地的)将代码更新到本地,例如:'git pull origin master'就是将origin这个版本库的代码更新到本地的master主枝,该功能类似于SVN的update

        git add:是将当前更改或者新增的文件加入到Git的索引中,加入到Git的索引中就表示记入了版本历史中,这也是提交之前所需要执行的一步,例如'git add app/model/user.rb'就会增加app/model/user.rb文件到Git的索引中

        git rm:从当前的工作空间中和索引中删除文件,例如'git rm app/model/user.rb'

        git commit:提交当前工作空间的修改内容,类似于SVN的commit命令,例如'git commit -m "story #3, add user model"',提交的时候必须用-m来输入一条提交信息

        git push:将本地commit的代码更新到远程版本库中,例如'git push origin'就会将本地的代码更新到名为orgin的远程版本库中

        git log:查看历史日志

        git revert:还原一个版本的修改,必须提供一个具体的Git版本号,例如'git revert bbaf6fb5060b4875b18ff9ff637ce118256d6f20',Git的版本号都是生成的一个哈希值、

        上面的命令几乎都是每个版本控制工具所公有的,下面就开始尝试一下Git独有的一些命令:

4、Git独有的一些命令

       git branch:对分支的增、删、查等操作,例如'git branch new_branch'会从当前的工作版本创建一个叫做new_branch的新分支,'git branch -D new_branch'就会强制删除叫做new_branch的分支,'git branch'就会列出本地所有的分支

        git checkout:Git的checkout有两个作用,其一是在不同的branch之间进行切换,例如 'git checkout new_branch'就会切换到new_branch的分支上去;另一个功能是还原代码的作用,例如'git checkout app/model/user.rb'就会将user.rb文件从上一个已提交的版本中更新回来,未提交的内容全部会回滚

        git rebase:rebase命令执行后,实际上是将分支点从C移到了G,这样分支也就具有了从C到G的功能 

                                            

        git reset:将当前的工作目录完全回滚到指定的版本号,

                                         

        git stash:将当前未提交的工作存入Git工作栈中,时机成熟的时候再应用回来,这里暂时提一下这个命令的用法,后面在技巧篇会重点讲解

        git config:利用这个命令可以新增、更改Git的各种设置,例如'git config branch.master.remote origin'就将master的远程版本库设置为别名叫做origin版本库,后面在技巧篇会利用这个命令个性化设置你的Git,为你打造独一无二的 Git

        git tag:可以将某个具体的版本打上一个标签,这样你就不需要记忆复杂的版本号哈希值了,例如你可以使用 'git tag revert_version bbaf6fb5060b4875b18ff9ff637ce118256d6f20'来标记这个被你还原的版本,那么以后你想查看该版本时,就可以使用 revert_version标签名,而不是哈希值了

        Git之所以能够提供方便的本地分支等特性,是与它的文件存储机制有关的。Git存储版本控制信息时使用它自己定义的一套文件系统存储机制,在代码根目录下有一个.git文件夹。


        有几个比较重要的文件和目录需要解释一下:HEAD文件存放根节点的信息,其实目录结构就表示一个树型结构,Git采用这种树形结构来存储版本信息, 那么HEAD就表示根;refs目录存储了你在当前版本控制目录下的各种不同引用(引用指的是你本地和远程所用到的各个树分支的信息),它有heads、 remotes、stash、tags四个子目录,分别存储对不同的根、远程版本库、Git栈和标签的四种引用,你可以通过命令'git show-ref'更清晰地查看引用信息;logs目录根据不同的引用存储了日志信息。因此,Git只需要代码根目录下的这一个.git目录就可以记录完 整的版本控制信息,而不是像SVN那样根目录和子目录下都有.svn目录。那么下面就来看一下Git与SVN的区别吧

5、Git与SVN的不同

        SVN(Subversion)是当前使用最多的版本控制工具。与它相比较,Git最大的优势在于两点:易于本地增加分支和分布式的特性。

                                                                                                                          

        对于易于本地增加分支,所有版本都存储在一个目录中,你只需要进行分支的切换即可达到在某个分支工作的效果。 而SVN则完全不同,如果你需要在本地试验一些自己的代码,只能本地维护多个不同的拷贝,每个拷贝对应一个SVN服务器地址。举一个实际的例子,以前我所 在的小组使用SVN作为版本控制工具,当我正在试图增强一个模块,工作做到一半,由于会改变原模块的行为导致代码服务器上许多测试的失败,所以并没有提交 代码。这时候上级对我说,现在有一个很紧急的Bug需要处理, 必须在两个小时内完成。我只好将本地的所有修改diff,并输出成为一个patch文件,然后回滚有关当前任务的所有代码,再开始修改Bug的任务,等到 修改好后,在将patch应用回来。前前后后要完成多个繁琐的步骤,这还不计中间代码发生冲突所要进行的工作量。可是如果使用Git, 我们只需要开一个分支或者转回到主分支上,就可以随时开始Bug修改的任务,完成之后,只要切换到原来的分支就可以优雅的继续以前的任务。只要你愿意,每 一个新的任务都可以开一个分支,完成后,再将它合并到主分支上,轻松而优雅。

        分布式对于Git而言,你可以本地提交代码,所以在上面的图中,Git有利于将一个大任务分解,进行本地的多次提交,而SVN只能在本地进行大量的一 次性更改,导致将来合并到主干上造成巨大的风险。Git的代码日志是在本地的,可以随时查看。SVN的日志在服务器上的,每次查看日志需要先从服务器上下 载下来。我工作的小组,代码服务器在美国,每次查看小组几年前所做的工作时,日志下载就需要十分钟,这不能不说是一个痛苦。后来我们迁移到Git上,利用 Git日志在本地的特性,我用Ruby编写了一个Rake脚本,可以查看某个具体任务的所有代码历史,每次只需要几秒钟,大大方便我的工作。当然分布式并 不是说用了Git就不需要一个代码中心服务器,如果你工作在一个团队里,还是需要一个服务器来保存所有的代码的。

        总结

        本篇介绍了Git的基本概念、一些常用命令和原理,大家可以尝试动手体会一下,下一篇会重点介绍Git命令的使用技巧,Git附带的工具,最后会在Git Hub上创建一个开源项目。


MAC M1用户必看:UTM虚拟机安装Win11全流程避坑指南(附驱动下载) 本文为MAC M1用户提供UTM虚拟机安装Win11的完整指南,涵盖镜像准备、驱动优化及性能调优等关键步骤。特别针对TPM 2.0验证、网络连接等常见问题提供解决方案,帮助用户高效运行Windows 11 ARM版。 阅读详情

相关推荐

从模拟到实战:移远EC800M单片机MQTT接入OneNet全流程解析

本文详细解析了移远EC800M单片机通过MQTT协议接入OneNet平台的全流程,涵盖环境准备、模拟设备搭建、硬件迁移、数据交互调试及性能优化等关键步骤。针对常见问题如AT指令缓冲区溢出、心跳间隔设置等提供实战解决方案,帮助开发者高效实现物联网设备稳定接入。

weixin_29215815的博客 430

分布式代码管理工具git的使用

常见代码管理工具有git和svn,本文主要介绍git的使用和一些常见操作。不涉及git仓库的新建和初始化。

IMGDX的博客 277

MS建模mmt

一、流程:1.定义好每个原子力场类型:Edit Sets(分组) 2.加H(一般是仅与Al-O八面体中的Al相连的O原子)、给H分组 3.“make P1”、校核化学式(正确与否) 4.扩成超晶胞(Na-mmt:4*1*1,Ca-mmt:4*2*1,illite:2*1*1,由化学式而定) 5.置换阳离子: mmt:模型中每 32 个 Si 4+有 1 个被 Al 3+ 取...

weixin_30721899的博客 2174

分布式版本控制工具 —— Git

介绍了通过客户端和命令方式如何使用Git完成对仓库的基本操作

欢迎来到我的世界 1342

半导体设备上位机开发:我的经验与新人指导

半导体设备上位机开发是一项复杂而富有挑战性的工作,需要扎实的技术基础和丰富的经验。如果你对半导体设备上位机开发感兴趣,欢迎随时与我交流,我会尽力帮助你!

qq_43518667的博客 2726

030、自动白平衡AWB实战:灰度世界、完美反射与色温估计的工程实现与局限

本文深入探讨了自动白平衡(AWB)算法在工程实践中的实现与局限性。作者结合实际项目经验,分析了灰度世界算法、完美反射算法和色温估计三种主流方法的优缺点和适用场景,并分享了调试过程中的关键技巧和常见陷阱。文章指出,纯色背景、多光源环境等特殊场景容易导致算法失效,需要通过混合策略和场景检测来优化。作者强调AWB调试需要大量实际场景测试,建议保留手动调节功能,并针对不同硬件配置进行参数标定。最后提出,AWB优化是一个持续迭代的过程,需要工程化的测试方法和数据处理能力。

zzfmlxs的博客 280

代码管理工具Git使用

Git的特点开源的分布式版本管理工具开源项目集中的代码库所有略有规模的公司都在使用。

FrostyGreatSt的博客 1537

2026年广东省职业院校技能大赛中职组“大数据应用与服务”样题一完整参考答案

2026年广东省职业院校技能大赛中职组“大数据应用与服务”样题一完整参考答案

我是网络安全兼技能大赛工程师,专注网络安全技术学习与技能大赛实战!持续分享最新的技术文章,帮你少走弯路,一起在技术赛道上进步~ 739

分布式管理工具git

文章目录git 基本概念git 基本功能git 配置环境安装windows 环境搭建安装遇到的问题 git 基本概念 git 基本功能 git 配置环境 git 配置环境需要的软件git: https://git-scm.com/download 安装 傻瓜式安装,软件下载一路next 就可以 windows 环境搭建 查看配置信息 git config list 设置user.name和user.email配置信息 git config --global user.name "你的GitHub用户名"

技术鱼的博客 1161

使用 MATLAB/Simulink + Simscape Electrical + Simulink Design Optimization,构建一个基于SiC/GaN的Z源逆变器在储能系统中的软启

《手把手教你学Simulink:Z源逆变器在储能系统中的应用》摘要 本文详细介绍了使用MATLAB/Simulink构建Z源逆变器储能系统仿真模型的全过程。Z源逆变器凭借其独特的阻抗网络结构,解决了传统逆变器在直通保护和升压能力方面的痛点。文章通过6个关键步骤:主电路搭建、调制策略设计、软启动实现、仿真分析、效率对比和工程问题解决方案,完整展示了Z源逆变器从理论到仿真的实现路径。重点讲解了直通零矢量SPWM调制策略和渐进式升压比控制方法,验证了系统93.3%的效率和优异的抗扰性能。该模型为光伏储能、电动汽车

MHD0815的博客 122

【即插即用模块】Transformer篇 | AAAI 2026 | Circulant Attention:全新ViT自注意力范式,复杂度从O(N²) 降至O(NlogN)!

本文提出了一种基于频域优化的循环注意力模块(Circulant Attention),通过离散傅里叶变换(DFT)将传统自注意力中的矩阵乘法转化为频域元素乘法,显著降低了计算复杂度。该模块采用复数线性层适配频域特征,并引入门控调制机制增强表达能力,在保持全局依赖捕捉能力的同时,将复杂度从O(N²)降至O(NlogN)。实验表明,该模块在多种视觉任务中均能提升模型性能,且计算效率更高。适用于需要高效全局注意力的视觉Transformer架构,可作为传统自注意力的替代方案。

主要更新底层视觉(去噪、超分等)相关的科研内容,形式为【论文精读】+【论文复现】 150

【git篇】git的使用

Git是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。集中式(SVN) VS 分布式(git)集中式版本控制系统,版本库是集中存放在中央服务器的,工作时要先从中央服务器取得最新的版本,完成工作后,再把自己的文件推送给中央服务器。集中式版本控制系统在工作时需要联网。分布式版本控制系统没有“中央服务器”,每个人的电脑上都是一个完整的版本库,所以就不需要联网。

weixin_45842494的博客 3万+

在VINS-FUSION上处理KITTI数据集(双目+GPS)

VINS-Fusion 是一个开源的实时多传感器状态估计库,主要由香港科技大学的沈邵劼教授领导的研究团队开发。它是 VINS-Mono(单目视觉惯性系统)的扩展,支持多种传感器组合,如双目、立体相机和IMU。

如果想成为中心,那么就到中心去吧。 1204

Git基础篇~获取Git仓库

前言:本篇内容涵盖了你在使用Git完成各种工作中将要使用的各种工作命令,通过本篇学习完后,你应该能够配置并初始化一个仓库(repository)、开始或停止跟踪(track)、暂存(stage)或提交(commite)更改,以及如何迅速而简单的撤销错误操作、如何浏览你的项目的历史版本以及不同提交(commits)之间的区别、如何向你的远程仓库推送(push)以及如何从你的远程仓库拉取(pull)文...

qq_28675967的博客 721

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Git 第一讲---基础篇 git基础概念与操作

本文将从零开始,为你揭开Git的神秘面纱。

hi0_6的博客 2313

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

【Git 教程系列第 7 篇】创建仓库 — git init

这篇博客给大家介绍:如何创建一个 Git 版本库。 一:什么是版本库 ? 二:如何创建版本库 ?

“Allen Su”的博客 5267

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Git学习-高级篇1

Git高级特性学习,本篇主要介绍了git中提交树的分支移动

Jin的博客 1808

git使用篇

GIT篇 目录 GIT篇 1. 分布式与集中式管理 2. 时光穿梭 2.1 版本回退 2.2工作区与暂存区 2.3 管理修改 2.4 撤销修改 2.5 删除文件 3. 远...

YMilton的专栏 314

Git基础篇(常用Linux命令以及git的基本操作)(一)

大家好!我是爱打代码的小乌龟,git作为一个程序员必须要掌握的一门技术,接下来的几天我会带大家一起学习git,本次共分为三篇,希望大家能够喜欢。

hgz3315867391的博客 1453

Git 基础篇

一,基础配置 git config --global user.name <your-account-name> 配置用户名 git config --global user.email <your-email> 配置邮箱 git config --global core.editor vi 配置编辑器 git config --g...

zjx624bjh的博客 434

关于Eclipse使用Git基础篇

一:Git的下载与安装与基本使用 1.打开eclipse->help->Eclipse Markplace->search->fiind输入Egit 你会看到如下截图(我的为已安装):和下载其他插件一样跟着点就好! 2.重启eclipse->window->Show View->other->输入Git->点击Git Rep...

anhui7797的博客 145

【Git 教程系列第 4 篇】安装 Git 及配置用户信息

1:如何在 Windows 上安装 Git 2:如何验证 Git 是否安装成功 3:Windows下如何对已安装的 git 进行版本升级 二:配置用户信息: 1:配置用户名及邮箱 2:如何获取自己的用户名及邮箱 3:如何修改自己的用户名及邮箱 如何安装 Git

“Allen Su”的博客 1344

VSCode中的git使用篇

基本上使用 在一个目录下clone项目; git clone XXXXXX.git 使用VScode 打开项目 右击通过Code打开。 使用vscode提交代码 打开下面视图,添加一行文字## 测试提交 点击 + ;相当于git add . 点击对号;等于git commit -m "备注信息";右边的箭头输入需要备注的信息。然后按 Enter 确定。 回车之后,然后我们可以看到。所有的...

PresByter的博客 11万+

【Java基础篇】之IDEA中使用Git

idea中可视化操作Git工具完成代码远程托管,并学习使用git多分支利于团队协作开发、模块化开发项目。

初入IT的博客 1万+

Git学习之基础篇

Git学习系列基础篇What is Git?Git的基本命令列表git statusgit initgit addgit commitgit loggit add &amp; git commitgit branchgit mergegit branch -dgit tag 参考 《从0开始学习Github系列》 What is Git? Git是Linux发明者Linus开发的一款版本控制系统那...

onion_lwl的博客 453

【Git 教程系列第 3 篇】Git 与 SVN 的区别

首先,Git 不仅仅是个版本控制系统,它也是个内容管理系统(CMS),工作管理系统等。 如果你一直用的是SVN,那你需要做一下思想转换,来适应 Git 提供的一些概念和特征。 Git 与 SVN 区别点 1: “版本控制系统” 的区别 2: “存储方式” 的区别 3: “分支” 的区别 4: “版本号” 的区别 5: “内容完整性” 的区别 二:分布式版本控制系统 与 集中式版本控制系统 的区别

“Allen Su”的博客 826
上一篇: Touch panel DTS 分析(MSM8994平台,Atmel 芯片)
下一篇: 深入探讨this指针
计算机与认知
博客等级 码龄14年 31粉丝 19原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值