Git

GIT科普系列5:index in git 背景:git的使用其实没有想象中的那么复杂,平日里真正使用的指令都是极少数、最简单格式的。之所以使用过程中感觉操作复杂、冲突不断,究其根源是对git的设计理念缺乏了解,没有搞清楚git实现版本控制的巧妙之处。之前GIT科普系列试图从底层机制来入手讲解GIT的使用,抱着“授人以鱼不如授人以渔”的心态,但是对于希望快速学习和掌握GIT使用方法的读者来说可能收效甚微。 阅读详情

目录

Git 配置

Git 工作区、暂存区和版本库

Git 工作流程


Git是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。

Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。

Git 与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式,不必服务器端软件支持。

Git安装

Git 各平台安装包下载地址为:http://git-scm.com/downloads

Git 配置

Windows 系统上,Git 会找寻用户主目录下的 .gitconfig 文件。主目录即 $HOME 变量指定的目录,一般都是 C:\Documents and Settings\$USER。

用户信息

配置个人的用户名称和电子邮件地址:

$ git config --global user.name "ybao"
$ git config --global user.email test@ybao.org

如果用了 --global 选项,那么更改的配置文件就是位于你用户主目录下的那个,以后你所有的项目都会默认使用这里配置的用户信息。

如果要在某个特定的项目中使用其他名字或者电邮,只要去掉 --global 选项重新配置即可,新的设定保存在当前项目的 .git/config 文件里

查看配置信息

要检查已有的配置信息,可以使用 git config --list 命令:

$ git config --list
http.postbuffer=2M 
user.name=ybao
user.email=test@ybao.org

直接查阅某个环境变量的设定,只要把特定的名字跟在后面即可,像这样:

$ git config user.name
ybao

Git 工作区、暂存区和版本库

 

Git 工作区、暂存区和版本库概念

  • 工作区:就是你在电脑里能看到的目录。
  • 暂存区:英文叫stage, 或index。一般存放在 ".git目录下" 下的index文件(.git/index)中,所以我们把暂存区有时也叫作索引(index)。
  • 版本库:工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库。

下面这个图展示了工作区、版本库中的暂存区和版本库之间的关系:

图中左侧为工作区,右侧为版本库。在版本库中标记为 "index" 的区域是暂存区(stage, index),标记为 "master" 的是 master 分支所代表的目录树。

图中我们可以看出此时 "HEAD" 实际是指向 master 分支的一个"游标"。所以图示的命令中出现 HEAD 的地方可以用 master 来替换。

图中的 objects 标识的区域为 Git 的对象库,实际位于 ".git/objects" 目录下,里面包含了创建的各种对象及内容。

当对工作区修改(或新增)的文件执行 "git add" 命令时,暂存区的目录树被更新,同时工作区修改(或新增)的文件内容被写入到对象库中的一个新的对象中,而该对象的ID被记录在暂存区的文件索引中。

当执行提交操作(git commit)时,暂存区的目录树写到版本库(对象库)中,master 分支会做相应的更新。即 master 指向的目录树就是提交时暂存区的目录树。

当执行 "git reset HEAD" 命令时,暂存区的目录树会被重写,被 master 分支指向的目录树所替换,但是工作区不受影响。

当执行 "git rm --cached <file>" 命令时,会直接从暂存区删除文件,工作区则不做出改变。

当执行 "git checkout ." 或者 "git checkout -- <file>" 命令时,会用暂存区全部或指定的文件替换工作区的文件。这个操作很危险,会清除工作区中未添加到暂存区的改动。

当执行 "git checkout HEAD ." 或者 "git checkout HEAD <file>" 命令时,会用 HEAD 指向的 master 分支中的全部或者部分文件替换暂存区和以及工作区中的文件。这个命令也是极具危险性的,因为不但会清除工作区中未提交的改动,也会清除暂存区中未提交的改动。

Git 工作流程

一般工作流程如下:

  • 克隆 Git 资源作为工作目录。
  • 在克隆的资源上添加或修改文件。
  • 如果其他人修改了,你可以更新资源。
  • 在提交前查看修改。
  • 提交修改。
  • 在修改完成后,如果发现错误,可以撤回提交并再次修改并提交。

Git 的常用命令:

  • git clone
  • git remote
  • git fetch
  • git pull
  • git push

下图展示了 Git 的工作流程:

 

git

 

 

【GIT】git个人笔记 GIT个人手册 版本 日期 修订内容 作者 V01 2019-06-25 初稿 备注: 使用中不断迭代完善,其他人使用中有其他总结的,可以补充。 目录 第一章说明 一.1.1GIT 中文手册 一.1.2git仓库说明(工作区、暂存区、本地仓、远程仓)1 一.1.3git仓库说明(工作区、暂存区、本地仓、远程仓)2... 阅读详情

相关推荐

GIT泄露

注意:GitHack是在python2的环境下运行的,dirsearch是在python3环境下运行的,在使用命令使用工具时,最好是写明是python2还是python3,特别是kali中,集成了python2和python3,如果不知名python2还是python3,可能会报错。一般情况在没有提示是git时,通过扫描后台来确定是否存在git泄露,或者可以尝试访问git网页,在确定存在git泄露之后,就可以通过githack来下载git文件,再配合git命令来查看git文件中的内容。

weixin_74020633的博客 1339

关于Git这一篇就够了

目录 前言 发展过程 集中式与分布式的区别 Debian/Linux安装Git 配置git环境:git config --global 创建本地空仓库:git init 新建文件添加到本地仓库:git add、git commit -m 改写提交:git commit --amend 查看历史提交日志:git log 回滚代码仓库:git reset --hard 查看提交之后文件是否做了改动:git status 工作区与缓存区 修改缓存区内容:git add、git co.

17岁boy的博客 53万+

git hook 自动部署 linux git本地服务器搭建 git root 目录 git 仓库 git root/ .git

服务器自动部署项目之GitHooks神器 - 优快云博客--每次都是将本地将代码push到远程仓库,然后再ssh到服务器上git pull,甚是麻烦。在项目开发中使用git的时候,push之后,编译系统会有自动部署等功能。下面是配置方法==首先要明确现在代码的分布情况,1,开发者电脑上的本地仓库,2,git服务器上的远端仓库,3,web服务器上的另一个本地仓库,(我们浏览器访问的就是这里的代码)...

韩梦飞沙_韩亚飞 2039

GIT实战篇,教你如何使用GIT可视化工具

经过前三期的学习,不管是GIT模型还是GIT命令,相信大家都已经有了比较全面的了解。当然,尽管GIT命令永远是最强大而全面的,但其并不是只能使用命令来控制,我们还可以使用一些可视化工具。通过界面按钮,能大大提高我们的使用效率。不过,前提是我们已经知道其运行机制,不然就会导致意料之外的情况,这些内容,今天我就带大家一起来学习一些可视化工具的内容

战斧的博客 1万+

Win11大版本更新失败:系统保留分区空间不足的终极解决方案

本文针对Windows 11大版本更新时遇到的“系统保留分区空间不足”错误,提供了详细的诊断与解决方案。核心问题在于EFI系统分区(ESP)空间过小,导致更新失败。文章重点介绍了使用傲梅分区助手等第三方工具安全扩展EFI分区的完整步骤,并提供了手动清理、使用安装介质修复等替代方案,帮助用户彻底解决更新障碍,顺利完成Win11升级。

weixin_29280219的博客 950

AtmelStudio 7 ASF库学习笔记一:新建工程、配置时钟、下载程序和查看官方例程

由于需要学习一下atmel的atsaml 系列,使用AtmelStudio 7开发,之前主要用STM32,现在看到Atmel的库函数,其实是有些类相似的。 ASF3的库对应ST的标准库。ASF4对应ST的HAL库,Ateml Start对应STM32CubeMX。但在这里还是用ASF3来开发,因为Ateml Start还不支持我的这个芯片,而且和STM32的HAL库类似,ASF4为了好移植都是底...

yxy244的博客 8657

【Git】Git使用Gui图形化界面,Git中SSH协议,Idea集成Git

【Git】Git使用Gui图形化界面,Git中SSH协议,Idea集成Git

m0_73192864的博客 8971

解决WSL2网络隔离:Ubuntu子系统共享Windows代理的3种方法

本文详细解析了WSL2的网络隔离特性,并提供了三种在Ubuntu子系统中共享Windows代理的实用方法:环境变量法、配置文件法和系统服务法。通过具体代码示例和方案对比,帮助开发者快速解决WSL2网络访问问题,实现一键设置代理,提升开发效率。

weixin_29295541的博客 450

【GIT】git知识总结

Git 是一个强大、灵活且高效的版本控制系统,被广泛用于软件开发和其他领域,是开发者不可或缺的工具之一为什么选择git?Git 提供了强大的版本控制功能,可以追踪文件的每一次修改,记录项目的演变历史。这使得开发者可以随时回滚到之前的版本,比较不同版本之间的差异,以及分析项目的发展轨迹。Git 是一种分布式版本控制系统,每个开发者都可以在本地拥有完整的项目副本,不依赖于中央服务器。这样可以在离线状态下进行工作,并允许灵活的分支管理和合并。

Patrick_yuxuan的博客 2783

从零到一:手把手教你用DJI E-Port套件为M350 RTK开发第三方负载(PSDK V3实战)

本文详细介绍了如何使用DJI E-Port套件为M350 RTK开发第三方负载,涵盖硬件配置、开发环境搭建及实战应用。通过PSDK V3开发套件,开发者可以高效实现负载与无人机的通信,适用于电力巡检等工业场景,提升开发效率与系统稳定性。

weixin_26841743的博客 701

第一章:GEE 和 GEEMAP

在本章中,我们将介绍地理空间数据科学、谷歌地球引擎和地理地图的基础知识。然后,我们将逐步完成设置 conda 环境和安装 geemap 的步骤。我们还将学习如何在不在您的计算机上安装任何东西的情况下将 geemap 与 Google Colab 一起使用。...

韩天放 8050

Git 命令

git help command git --version 查看git版本 git init 初始化本地仓库,会在当前目录下创建一个.git的目录 git config user.name "name" 项目级别的签名设置,放在工作...

EmbeddedCoder 的优快云博客 7360

Xilinx平台SRIO介绍(五)示例工程Example Design介绍

理解IP的使用,少不了Example Design的学习。

数字IC/FPGA杂货铺,找一找,或许有你想要的~ 1万+

在IDEA中使用Git,把IDEA项目加入Git本地库,使用Git管理Java代码

在IDEA中使用GIT,将项目开发代码加入版本控制。方便尝试开发功能失败时或切换版本,还原至稳定可用的状态

QIFU的专栏 8383

【QT开发教程】使用Qt进行蓝牙低功耗(BLE)编程

蓝牙低功耗(BLE,Bluetooth Low Energy)技术广泛应用于现代设备中,例如智能手表、健身追踪器和物联网设备。Qt提供了一套完整的Bluetooth模块,使开发者可以轻松地在应用程序中实现BLE通信功能。本文将介绍如何在Qt中进行BLE编程,包括基本概念、使用方法以及一些实际的示例。

科技改变人类,技术成就未来 2869

29、机器人动力学中的欧拉 - 拉格朗日与哈密顿力学

本文深入探讨了机器人动力学中的欧拉-拉格朗日与哈密顿力学框架,涵盖向量流形上的辛结构、哈密顿方程的几何代数表述、泊松括号与积分不变量等核心概念。文章详细推导了机电系统中拉格朗日量与哈密顿量的构建方法,并结合牛顿-欧拉算法给出了局部哈密顿量和动量导数的迭代计算流程,适用于多关节机器人的动力学建模与控制设计。通过应用案例展示了理论在双关节机器人手臂中的实际运用,最后展望了其在优化控制、鲁棒性提升及智能融合方向的潜力。

perl8的博客 129

git pull与git fetch及git merge与git rebase的区别

一、git pull与git fetch区别 1、两者的区别 两者都是更新远程仓库代码到本地 git fetch相当于是从远程获取最新版本到本地,不会自动merge。只是将远程仓库最新commitid记录更新到本地remote中对应的远程分支,而本地head不更新,仍然保持本地的commitid。 git pull相当于是从远程获取最新版本代码并自动merge。只是将远程仓库最新...

星空的风fly 8493

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Git操作

git remote add origin https://gitee.com/你的用户名/MyUnityGame.git。git remote add origin https://gitee.com/你的用户名/仓库名.git。git commit -m "描述你的修改内容,例如:更新UI界面,修复登录bug"git config --global user.email "你的邮箱"git config --global user.name "你的名字"git commit -m "解决冲突"

PA_的博客 1039

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

【Git】在Idea中使用Git

安装好IntelliJ IDEA后,如果Git安装在默认路径下,那么idea会自动找到git的位置,如果更改了Git的安装位置则需要手动配置下Git的路径。2、每一位组员从远程仓库克隆项目到idea中,这样每位同学在自己电脑上就有了一个工作副本,可以正式的开始开发了。4、组员A和组员B修改了同一个文件的同一行,提交到本地没有问题,但是推送到远程仓库时,后一个推送操作就会失败。3、组员A修改工作区,提交到本地仓库,再推送到远程仓库。解决方法:需要先获取远程仓库的代码到本地仓库,编辑冲突,提交并推送代码。

咖喱年糕的博客 7192

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

git Git私服搭建

泡沫☆蓝茶 博客园闪存首页新随笔联系管理订阅 随笔- 22 文章- 0 评论- 3  Hosting a Git server under Apache on Windows July 31, 2010 – 13:12 Last month I posted about hosting a git server under IIS by

荣仔 4737

Git 快速上手

Git 是一款由 Linux 之父 Linus Torvalds 于 2005 年开发的免费、开源的分布式源码管理(SCM,Source Code Management)工具,也称为版本控制系统(VCS,Version Control System),最初的目的是为了管理 Linux 内核的开发。

Doublelv 的博客专栏。 6265

IDEA 中配置GIT环境

IDEA一个很智能的java必备工具,可以很好的提升开发效率,本文介绍了配置Git忽略文件、在IDEA配置Git、在项目中配置Git、使用IDEA中的Git、IDEA中GIt版本的切换、IDEA创建分支、IDEA中切换分支、合并分支的操作,操作内容较多,跟着文章走能很快就学会,多多操作练习能更快熟练。

m0_54722399的博客 7036

Git系列四:常用命令的使用 git add、git status、git commit、git reset、git log、git pull、git push

常用命令的使用 git add、git status、git commit、git reset、git pull、git push、git log

qq_34761779的博客 1579

git 使用教程

替换暂存区和以及工作区中的文件。

weixin_43674738的博客 1139

git init、git add、git commit、git log、git reset、git rm等Git命令详解

一)Git图解 Git 的工作就是创建和保存你项目的快照及与之后的快照进行对比。 workspace:工作区 staging area:暂存区/缓存区 local repository:本地仓库 remote repository:远程仓库 例如到D盘根目录下(随意一个目录都行),用鼠标右键,查看Git菜单 Git GUI是一个界面化操作。 Git Bash是通过git命令操作,推荐使用命令操作方式。 打开Git Bash之后,执行git help命令,可查看git基本操作命.

p812438109的专栏 986
上一篇: AngularJS URL#号及刷新
下一篇: Git案例:月光宝盒 ,让我们随时回到以前
idsof
博客等级 码龄21年 9粉丝 34原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值