【git教程】

news2024/11/26 10:32:27

这里写目录标题

        • git是什么
        • 集中式版本控制系统和分布式版本控制系统
        • git的优势
        • git能做什么(常用)
        • 基础教程
          • 流程图
          • 介绍
          • 小节
        • 常用Git命令
          • 速查表
          • 详解
            • 1、HEAD
            • 2、add
            • 3、commit
            • 4、branch
            • 5、merge
            • 6、rebase
            • merge和rebase区别
            • 7、reset
            • 8、revert
            • revert与reset的区别

git是什么

git是目前世界上最先进的分布式版本控制系统

集中式版本控制系统和分布式版本控制系统

集中式版本控制系统:库是集中存放在中央服务器的,而干活的时候,用的都是自己的电脑,所以要先从中央服务器取得最新的版本,然后开始干活,干完活了,再把自己的活推送给中央服务器。中央服务器就好比是一个图书馆,你要改一本书,必:须先从图书馆借出来,然后回到家自己改,改完了,再放回图书馆。

分布式版本控制系统根本没有“中央服务器”,每个人的电脑上都是一个完整的版本库,这样,你工作的时候,就不需要联网了,因为版本库就在你自己的电脑上。既然每个人电脑上都有一个完整的版本库,那多个人如何协作呢?比方说你在自己电脑上改了文件A,你的同事也在他的电脑上改了文件A,这时,你们俩之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。

git的优势

• 适合分布式开发,强调个体。
• 公共服务器压力和数据量都不会太大。
• 速度快、灵活。
• 任意两个开发者之间可以很容易的解决冲突。
• 离线工作。

git能做什么(常用)

克隆版本库(目前我们最常用的功能)
工作中,当接手维护一个项目时,需要从远程代码库将项目源码克隆到本地。或者,在Github上发现了一个非常好的开源项目,想要搞下来研究研究,第一步也是克隆版本库。简单的说就是我们很方便的把一个项目的源码从网上下载到了本地。
• 项目版本控制
• 项目分支管理

基础教程

流程图

在这里插入图片描述

介绍

Workspace:工作区 :程序员进行开发改动的地方

Index / Stage:暂存区 :

当你完成某个需求或功能后需要提交到远程仓库,那么第一步就是通过git add先提交到暂存区,被git管理。

Repository:仓库区(或本地仓库)

保存了对象被提交 过的各个版本,比起工作区和暂存区的内容,它要更旧一些。
git commit后同步index的目录树到本地仓库,方便从下一步通过git push同步本地仓库与远程仓库的同步。

Remote:远程仓库

远程仓库的内容可能被分布在多个地点的处于协作关系的本地仓库修改,因此它可能与本地仓库同步,也可能不同步,但是它的内容是最旧的。

小节
  1. 任何对象都是在工作区中诞生和被修改;
  2. 任何修改都是从进入index区才开始被版本控制;
  3. 只有把修改提交到本地仓库,该修改才能在仓库中留下痕迹;
  4. 与协作者分享本地的修改,可以把它们push到远程仓库来共享。

常用Git命令

速查表

在这里插入图片描述

详解
1、HEAD

HEAD,它始终指向当前所处分支的最新的提交点你所处的分支变化了,或者产生了新的提交点,HEAD就会跟着改变。

2、add
指令作用
git add . 添加当前目录的所有文件到暂存区
git add [dir]添加指定目录到暂存区,包括子目录
git add [file1]添加指定文件到暂存区
3、commit
指令作用
git commit -m [message]提交暂存区到本地仓库,message代表说明信息
git commit [file1] -m [message]提交暂存区的指定文件到本地仓库
git commit --amend -m [message]使用一次新的commit,替代上一次提交
4、branch
指令作用
git branch列出所有本地分支
git branch -r列出所有远程分支
git branch -a列出所有本地分支和远程分支
git branch [branch-name]新建一个分支,但依然停留在当前分支
git checkout -b [branch-name]新建一个分支,并切换到该分支
git branch --track [branch][remote-branch]新建一个分支,与指定的远程分支建立追踪关系
git checkout [branch-name] 切换到指定分支,并更新工作区
git branch -d [branch-name]删除分支
git push origin --delete [branch-name]删除远程分支
5、merge
指令作用
git fetch [remote] merge之前先拉一下远程仓库最新代码
git merge [branch]合并指定分支到当前分支

一般在merge之后,会出现conflict,需要针对冲突情况,手动解除冲突。主要是因为两个用户修改了同一文件的同一块区域

6、rebase

rebase又称为衍合,是合并的另外一种选择。(一般不用)

merge和rebase区别

两个分支,test和master
在这里插入图片描述
在master执行git merge test
在这里插入图片描述
在master执行git rebase test
在这里插入图片描述
merge操作会生成一个新的节点,之前的提交分开显示。而rebase操作不会生成新的节点,是将两个分支融合成一个线性的提交。 如果你想要一个干净的,没有merge commit的线性历史树,那么你应该选择git rebase 如果你想保留完整的历史记录,并且想要避免重写commit history的风险,你应该选择使用git merge

7、reset

reset命令把当前分支指向另一个位置,并且相应的变动工作区和暂存区。

指令作用
git reset —soft [commit]只改变提交点,暂存区和工作目录的内容都不改变
git reset —mixed [commit]改变提交点,同时改变暂存区的内容
git reset —hard [commit]暂存区、工作区的内容都会被修改到与提交点完全一致的状态
git reset --hard HEAD让工作区回到上次提交时的状态
8、revert

git revert用一个新提交来消除一个历史提交所做的任何修改。
在这里插入图片描述

revert与reset的区别

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/585848.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Java算法题】剑指offer_数据结构之02树

前言 刷题链接: https://www.nowcoder.com/exam/oj/ta?page2&tpId13&type265 2. 树 JZ55 二叉树的深度 思路:dep max_deepth(left,right)1,二叉树的深度为根节点到叶子节点,使用递归访问根节点的左孩子和右孩子&…

想要让数据更生动?试试这5种图表工具

在当今大数据时代,数据的利用和分析在各个领域的工作中起着重要的作用。因此,数据可视化图形工具已经成为数据分析的好帮手。事实上,数据可视化的本质是视觉对话。它通过图形手段清晰直观地表达信息,从数据中获得价值。然而&#…

Netty实战(九)

单元测试 一、什么是单元测试二、EmbeddedChannel 概述三、 使用 EmbeddedChannel 测试 ChannelHandler3.1 测试入站消息3.2 测试出站消息 一、什么是单元测试 单元测试的基本思想是:以尽可能小的区块测试代码,并且尽可能地和其他的代码模块以及运行时的…

Java: IO流

1.定义 IO流:存储和读取数据的解决方案 用于读写文件中的数据(可以读写文件,或网络中的数据...) 2.IO流的分类 1.按着流的方向 1.输入流:读取 2.输出流:写出 2.按照操作文件类型 1.字节流:所有类型文件 体系&…

Redis:缓存击穿、缓存穿透与缓存雪崩的区别、解决方案

0、前言 近期学习redis相关原理,记录一下开发过程中Redis的一些常见问题及应对方法。 1、缓存穿透 一句话总结:先查redis发现没数据,再去数据库查发现还是没数据。 这种情况下缓存永远不会生效,数据库将承担巨大压力。 我们知道&…

前端食堂技术周刊第 84 期:第 96 届 TC39 会议、Deno 五周年、JavaScript 安全最佳实践、2023 Node.js 性能现状

By Midjournery 美味值:🌟🌟🌟🌟🌟 口味:葡萄冰萃美式 食堂技术周刊仓库地址:https://github.com/Geekhyt/weekly 本期摘要 第 96 届 TC39 会议Deno 五周年JavaScript 安全最佳…

FreeRTOS:信号量

目录 一、信号量是什么二、二值信号量2.1二值信号量简介2.2创建二值信号量2.2.1函数 vSemaphoreCreateBinary()2.2.2函数xSemaphoreCreateBinary()2.2.3 函数 xSemephroeCreateBinaryStatic()2.2.4二值信号量创建过程分析 2.3释放信号量2.3.1函数 xSemaphoreGive ()2.3.2函数 x…

【MySQL学习6:多行输入函数——聚合函数及SQL书写和执行规则】

之前做的笔记都在有道云,之后会一点点将以前的笔记分享出来~ (配图在笔记中查看) MySQL学习6:多行输入函数——聚合函数及SQL书写和执行规则 SQL书写顺序:SQL99执行顺序:一、常见的聚合函数1. 常见的聚合函…

算法当中的时间、空间复杂度?

1.究竟什么是时间复杂度 时间复杂度是一个函数,它定性描述该算法的运行时间 时间复杂度就是用来方便开发者估算出程序运行的答题时间。 通常会估算算法的操作单元数量来代表程序消耗的时间,这里默认CPU的每个单元运行消耗的时间都是相同的。 假设算法的…

微服务架构之服务监控与追踪

与单体应用相比,在微服务架构下,一次用户调用会因为服务化拆分后,变成多个不同服务之间的相互调用,每个服务可能是由不同的团队开发,使用了不同的编程语言,还有可能部署在不同的机器上,分布在不…

【MySQL】MySQL间隙锁--幻读解决原理

文章目录 一、间隙锁概念二、测试间隙锁范围加锁三、测试等值间隙锁 一、间隙锁概念 当我们用范围条件而不是相等条件检索数据, 并请求共享或排他锁时,InnoDB 会给符合条件的已有数据记录的索引项加锁;对于键值在条件范围内但并不存在的记录…

八、视图集ModelViewSet(重点)

上一章: 七、Django DRF框架GenericAPIView--搜索&排序&分页&返回值_做测试的喵酱的博客-CSDN博客 下一章: 九、DRF生成API文档_做测试的喵酱的博客-CSDN博客 一、视图集ModelViewSet与ReadOnlyViesSet ModelViewSet视图集 与 ReadOnly…

第13届蓝桥杯Scratch国赛真题集锦

编程题 第 1 题 问答题 LED屏幕 题目说明 编程实现 LED屏幕 具体要求: 1).点击绿旗,在舞台中心区域出现由10 x 10方格组成的LED屏幕; 2).按下空格键,LED屏幕最外环方格全部点亮 (方格变为黄色) 3).LED屏幕每秒向内点亮一层,其它LED灯熄灭; 4).直到LED灯在最中心点亮2秒…

games101作业5

作业要求 • Renderer.cpp 中的 Render():这里你需要为每个像素生成一条对应的光 线,然后调用函数 castRay() 来得到颜色,最后将颜色存储在帧缓冲区的相 应像素中。 • Triangle.hpp 中的 rayTriangleIntersect(): v0, v1, v2 是三角形的三个…

字节跳动测开岗面试居然这么简单....

因为读者里有不少刚入门测试的同学,这两天抽空整理了一份字节测开实习的面试题答案,说实话这个题目真挺简单的,如果你面大厂碰到此类面试题,也算是运气很好啦。大家也可以先自测一下,看看自己能不能答上来。 如果觉得…

vscode 插件 remote-ssh的安装及使用

文章目录 vscode 插件 remote-ssh的安装及使用windows VSCode(clangdremote-ssh) linux(clangd server) 开发环境问题问题1 : getPlatformForHost was canceled问题2 : host 主机不能联互联网问题3 : 每次都要输入密码 vscode 插件 remote-ssh的安装及使用 需要用到的东西1. r…

安装nodejs环境搭建vue项目的框架

说明:想要搭建一个vue项目的框架,先要安装nodejs环境;我的电脑已经安装过,先卸载掉,重新装一遍(卸载nodejs参考:http://t.csdn.cn/jHmCU) 一、安装nodejs环境 第一步:下…

ssh无密码链接

ssh的基本语法为 ssh host 然后输入密码才可以 如果a想要免密登录b,则a需要将自己的公钥放在b上,原理如下图: 例如,以aricoder这个用户登录的情况下,在服务器01上生成密钥,命令为 ssh-keygen -t rsa然后连…

前端面试题汇总大全二(含答案超详细,Vue,TypeScript,React,Webpack 汇总篇)-- 持续更新

前端面试题汇总大全(含答案超详细,HTML,JS,CSS汇总篇)-- 持续更新 前端面试题汇总二 五、Vue 篇1. 谈谈你对MVVM开发模式的理解?2. v-if 和 v-show 有什么区别?3. r o u t e 和 route和 route和router区别4.vue自定义…

千万级oracle数据表定时同步到mysql表的方案

1:业务背景 第三方系统提供了一张oracle视图,该视图有六千多万条数据,后续每月会产生三百万条数据的数据。需要每天将数据定时同步到自己系统的mysql表中。 (注:我们系统与外界系统访问都要经过一个中间系统的跳转才…