神级工具之git (一): git 基操

2024-03-24 13:28
文章标签 工具 git 基操 神级

本文主要是介绍神级工具之git (一): git 基操,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一切都从:Git User Manual开始,或者中文版的Git中文手册

核心概念

工作区

工作区我们可见的,可以进行修改的目录树。我们可以在目录树中进行文件的查看,修改。通常我们会使用一个神级编辑器Vim。我给她取了个名字,就叫View In Moon。神秘而无所不能。

暂存区

暂存区,在不可见的.git/ 目录树下,有个文件叫做index,用于记录改变的ID,而实际的改动内容被保存到了objects目录下面。

本地版本库

(本地)版本库,在.git/目录下,有个文件叫做HEAD,指向了本地库。而本地库文件的改动也都是记录与objects/ 目录下。

对象文件

对象文件,我们所有的改动记录都保存于这个目录下。整个的.git/目录下, objects/ 文件夹所占空间最大:

命令使用

git clone

一切工作的开始。Git是一个分布式的版本管理工具。通常我们将服务器上的原始文件仓以及git信息复制到本地进行开发。举个例子,我们简单的从github上clone一份c++的图形库和一个对应的小应用。地址为https://github.com/gimaroro/GraphicEngine.git

直接执行 git clone https://github.com/gimaroro/GraphicEngine.git 

结果如下:

 当前目录下,对应远端库文件目录。

同时,复制一份.git/文件目录。

git diff

查看工作区和暂存区的差别。

git add

将工作区中的更改记录到index中,并将改变生成一个对应的object文件保存。

git commit

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

git reset

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

git rm

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

git checkout

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

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

git push

将本地库中的修改推送到远端服务器代码库中。通常要对应对应的远端分支名,对应分支内容将发生变更。

git pull

这个命令是git fetch和git merge的组合。

git fetch

例如, 我在服务器上修改一部分代码。这部分代码的修改可以通过git fetch remote-repo/branch的形式下载变动。

git merge

git merge other-branch。 将other-branch的改动合并到当前的分支,并且向前HEAD向前移动。

git init

这个我们在后面的服务器搭建gerrit再讲。

git remote 

查看与当前本地库对应的远端的分支。git remote add name  remote-url. 给远端的分支创建一个别名。

git blame

通常使用方法是 git blame file; 查看该文件的最近的每一行的提交记录。

git bi-search 

git bisect start:开启一个二分查找过程
git bisect good/new; 或者使用 git bisect bad/old;
git bisect terms:查看当前用的标记是什么内容
git bisect skip:跳过某个 commit
git bisect reset:回到 git bisect 前的状态
git bisect view:当前二分查找过程还剩下多少 commit
git bisect log:查看 bisect 过程的日志
git bisect run:通过可执行文件来自动测试和打 good、bad 标记
git bisect replay:根据日志文件重新跑二分查找过程

总结

其实很早就接触git 工具了,应该精通git,并且将服务器端的部署结合gerrit的内容应用起来。曲不离口,码不离手。淦!

这篇关于神级工具之git (一): git 基操的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/841717

相关文章

Python基于wxPython和FFmpeg开发一个视频标签工具

《Python基于wxPython和FFmpeg开发一个视频标签工具》在当今数字媒体时代,视频内容的管理和标记变得越来越重要,无论是研究人员需要对实验视频进行时间点标记,还是个人用户希望对家庭视频进行... 目录引言1. 应用概述2. 技术栈分析2.1 核心库和模块2.2 wxpython作为GUI选择的优

使用Java实现通用树形结构构建工具类

《使用Java实现通用树形结构构建工具类》这篇文章主要为大家详细介绍了如何使用Java实现通用树形结构构建工具类,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录完整代码一、设计思想与核心功能二、核心实现原理1. 数据结构准备阶段2. 循环依赖检测算法3. 树形结构构建4. 搜索子

利用Python开发Markdown表格结构转换为Excel工具

《利用Python开发Markdown表格结构转换为Excel工具》在数据管理和文档编写过程中,我们经常使用Markdown来记录表格数据,但它没有Excel使用方便,所以本文将使用Python编写一... 目录1.完整代码2. 项目概述3. 代码解析3.1 依赖库3.2 GUI 设计3.3 解析 Mark

IDEA中Git版本回退的两种实现方案

《IDEA中Git版本回退的两种实现方案》作为开发者,代码版本回退是日常高频操作,IntelliJIDEA集成了强大的Git工具链,但面对reset和revert两种核心回退方案,许多开发者仍存在选择... 目录一、版本回退前置知识二、Reset方案:整体改写历史1、IDEA图形化操作(推荐)1.1、查看提

利用Go语言开发文件操作工具轻松处理所有文件

《利用Go语言开发文件操作工具轻松处理所有文件》在后端开发中,文件操作是一个非常常见但又容易出错的场景,本文小编要向大家介绍一个强大的Go语言文件操作工具库,它能帮你轻松处理各种文件操作场景... 目录为什么需要这个工具?核心功能详解1. 文件/目录存javascript在性检查2. 批量创建目录3. 文件

jvm调优常用命令行工具详解

《jvm调优常用命令行工具详解》:本文主要介绍jvm调优常用命令行工具的用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一 jinfo命令查看参数1.1 查看jvm参数二 jstack命令2.1 查看现场堆栈信息三 jstat 实时查看堆内存,gc情况3.1

MySQL使用binlog2sql工具实现在线恢复数据功能

《MySQL使用binlog2sql工具实现在线恢复数据功能》binlog2sql是大众点评开源的一款用于解析MySQLbinlog的工具,根据不同选项,可以得到原始SQL、回滚SQL等,下面我们就来... 目录背景目标步骤准备工作恢复数据结果验证结论背景生产数据库执行 SQL 脚本,一般会经过正规的审批

基于Python开发批量提取Excel图片的小工具

《基于Python开发批量提取Excel图片的小工具》这篇文章主要为大家详细介绍了如何使用Python中的openpyxl库开发一个小工具,可以实现批量提取Excel图片,有需要的小伙伴可以参考一下... 目前有一个需求,就是批量读取当前目录下所有文件夹里的Excel文件,去获取出Excel文件中的图片,并

Java导入、导出excel用法步骤保姆级教程(附封装好的工具类)

《Java导入、导出excel用法步骤保姆级教程(附封装好的工具类)》:本文主要介绍Java导入、导出excel的相关资料,讲解了使用Java和ApachePOI库将数据导出为Excel文件,包括... 目录前言一、引入Apache POI依赖二、用法&步骤2.1 创建Excel的元素2.3 样式和字体2.

基于Python开发PDF转PNG的可视化工具

《基于Python开发PDF转PNG的可视化工具》在数字文档处理领域,PDF到图像格式的转换是常见需求,本文介绍如何利用Python的PyMuPDF库和Tkinter框架开发一个带图形界面的PDF转P... 目录一、引言二、功能特性三、技术架构1. 技术栈组成2. 系统架构javascript设计3.效果图