最简单的git图解(系列一)

news2025/1/16 1:45:31

git clone:

这个命令用于将远程代码仓库克隆到本地,这是对任何项目进行开发前的第一步。

比如你本地本来并没有某个项目的代码仓库,此时随便找一个文件目录并进入cmd命令窗口,执行命令git clone [remote address],[remote address]就是对应的远程代码仓库地址,克隆完成之后,你便可以看到新建了一个目录,进入该目录,会看到.git,所有包含.git的目录其实就是你本地的关于该项目的一个git代码仓库。比如:

 

这个git_test目录就是jerry本地关于git_test这个项目的代码仓库,在该目录下进入cmd命令窗口可以执行各种git命令。这里简单演示下分支相关的命令:

执行下git branch:

可以看到所有本地分支,其中master是你当前所在分支。

执行下git branch -a:

可以看到所有分支,包括本地分支以及远程分支。

如果想切换到demo分支,执行git checkout demo即可。

如果demo分支还没有,想要从origin/demo分支切出来demo分支,执行git checkout -b origin/demo demo。

克隆之后,会默认把远程仓库命名为“origin”,同时你的本地仓库里面的分支会跟踪远程同名分支:

 

这样的分支以及分支直接的跟踪关系可以通过git的配置文件查看到,进入.git目录,查看config文件,记录了当前仓库的详细配置:

 

其中[core]记录的是仓库配置;[remote “origin”]就是说我们目前只有一个远程仓库,给这个远程仓库命名为“origin”;[branch “master”]跟踪了远程仓库origin里面的master分支,[branch “demo”]跟踪了远程仓库origin里面的demo分支。

git pull:

经过上面的git clone之后,其实是把此刻最新的远程代码仓库给克隆到本地了。但如果项目团队中另一名成员提交了新的代码到远程仓库,比如这样:

 那么此时你(jerry)本地的代码仓库如何获取到远程仓库中新的内容呢?这就要用到git pull操作了。

完整的git pull命令是这样子的:git pull <远程主机名> <远程分支名>:<本地分支名>。比如: git pull origin master:master。

那如果我就简单执行了git pull,没写这么长会发生什么呢?那么会把当前所在分支所跟踪的远程分支上新的提交,拉到当前分支上。

如果jerry当前在master分支上,那么简单的执行git pull 即相当于 git pull origin master:master。如果当前不在master分支上,那么就只能老老实实执行git pull origin master:master了。

git pull命令执行之后,就会变成下面这样:

其实上图展现得并不完全准备,实际上本地还有origin/*这样的分支,我们在下面学习git fetch命令的时候,会看到。

git fetch:

都说git pull = git fetch + git merge,实际上到底是如何发生的呢?下面用图说话,我们来一起看一看。

Git pull操作实际上分为两步,第一步执行了git fetch,将远程仓库里面的分支上的所有新的提交拉下来到对应的本地origin/*分支上:

 

第二步将对应的本地origin/*分支上的提交merge到本地分支上。比如如果我执行的是git pull origin master:master,那么只会将origin/master分支merge到master分支上,而不会将origin/demo分支merge到demo分支上:

 

当然了,你也可以只执行git fetch命令,执行之后只会将所有远程仓库中的所有分支上的新提交拉取到你本地所有的对应的origin/*分支上,但master、demo这样的本地分支不会有任何变化。

git merge:

Git merge可以发生在任何两个分支之间,一般操作方式为: git merge demo,那么会将demo分支merge到当前所在分支上:

 图例中从C2开始,从master分支切出去了一个新的分支:demo分支,demo分支上有一些提交,与此同时,master分支上也有一些提交。如果当前所处分支为master,执行git merge demo,那么会生成一个merge提交:C7。Demo分支上的所有提交也会被放到master分支上,最终master分支长这样:

 可以看到所有提交是按照提交时间顺序排列的,不管是master上后来的提交,还是demo分支上的提交,都是按照提交时间排列在了分支链上。

git add & git commit:

在git中,可以分为三种区域,分别是工作目录、暂存区、git仓库。其中工作目录中放的就是实际的文件,暂存区放的索引,git仓库里面放的是目录树(可以理解为分支链)。

 

执行git add命令,会把指定的工作目录中经过增删改的文件放入暂存区(其实就是会被暂存区的索引引用到)。

可以执行git add [file1] [file2]...将多个有变动的文件放入暂存区,也可以执行git add . 将当前目录及其子目录下的所有有变动的文件放入暂存区。

执行git commit命令,会将暂存区的所有文件进行一次提交,提交之后会进入本地git仓库,形成当前分支链上的一个点(如上图所示)。

可以执行git commit -m “my first commit”来提交并写上提交说明,标记本次提交修改了些什么东西。

git push:

那如何将本地git仓库中新增的提交推送到远程仓库对应的分支上呢?这就要用到git push命令了。

完整的git push命令是:git push <远程主机名> <本地分支名>:<远程分支名>。比如:git push origin master:master,就是将本地的master分支上的新提交推送到远程仓库的master分支上。

如果只是简单的写了git push,那么会将当前分支上的新提交推送到其跟踪的远程仓库的分支上。

一般在git push之前,需要先执行git pull,以保证你本地仓库拉取到远程仓库最新的内容。如果git push之前没有先执行git pull,那么在你git push的时候,就是下面这个样子的:

 

此时git push操作要么就是直接push失败,提示你:你本地分支落后于远程分支;即使能成功,也会在远程仓库分支上新增一个不必要的merge提交。而且如果遇到代码冲突的情况,push是肯定会失败的,你需要先把远程仓库的提交pull下来,本地解决冲突之后,再进行push:

好了,这就是今天的分享,以后我会不定期地继续更新,还是以这种图文的形式,我相信图解是最好的理解方式,我坚持以最简单、实用、易懂的方式把复杂的东西讲出来,希望可以帮助更多学习git的人少走弯路。 

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

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

相关文章

SQL 50 题(MySQL 版,包括建库建表、插入数据等完整过程,适合复习 SQL 知识点)

目录1.建库建表2.插入数据3.SQL 50 题3.1.SQL 01——查询"01"课程比"02"课程成绩高的学生的信息及课程分数3.2.SQL 02——查询"01"课程比"02"课程成绩低的学生的信息及课程分数3.3.SQL 03——查询平均成绩大于等于 60 分的同学的学生编…

SMP多核启动(一):spin-table

前言 看这篇文章&#xff0c;你必备的一些前置知识有如下 1、ATF启动流程 2、PSCI电源管理的概念 3、设备树 如果没有&#xff0c;可以去我的专栏目录下逛逛&#xff0c;会有所收获。 1、SMP是什么&#xff1f; SMP 英文为Symmetric Multi-Processing &#xff0c;是对称多…

Vscode环境下的PyQt

一、环境配置 ①在Conda控制台下执行以下两条命令&#xff0c;添加开发环境 pip install PyQt5 pip install PyQt5-Tools ②找到designer.exe并运行 文件在哪网上说法千奇百怪&#xff0c;我建议还不如装个everything直接在C盘做全局搜索来得快&#xff0c;实在不想装的话可以…

C轮累积融资1亿美金 禾多科技如何靠自我造血能力赢得资本青睐?

自动驾驶当前在全球范围内受到广泛关注&#xff0c;是汽车行业正在集中力量攻克的新领域。据英特尔预计&#xff0c;2050年仅自动驾驶汽车的市场规模将达到7万亿美元。引得资本和科技巨头们纷纷“下注”。 近日&#xff0c;全栈自动驾驶科技公司禾多科技宣布&#xff0c;已完成…

Redis主从结构数据同步分析

Redis主从结构有两种部署方式&#xff0c;如下&#xff1a; 一主多从的模式是使用最多的模式&#xff0c;通常搭建哨兵或者集群都采用这种方式&#xff0c;但是这种方式主节点复制压力较大&#xff0c;尤其是全量同步的时候。 级联结构使用情况相对较少&#xff0c;这种结构中间…

前端AST详解,手写babel插件

&#x1f431;个人主页&#xff1a;不叫猫先生 &#x1f64b;‍♂️作者简介&#xff1a;专注于前端领域各种技术&#xff0c;热衷分享&#xff0c;关注我会给你带来一些不一样的认知和成长。 &#x1f4dd;个人签名&#xff1a;不破不立 &#x1f36c;本文目录&#x1f959;一…

C++课堂整理--第二章内容

提前声明&#xff1a; 本文内容为华北水利水电大学研究生C课程&#xff0c;如有 侵权请告知&#xff0c;作者会予以删除 1程序控制结构 语句是程序的基本语法成分。程序设计语言的语句按功能可以分成三类&#xff1a;声明语句 指示编译器分配内存&#xff0c;或者提供程序…

Windows服务器配置证书

以windows server 2012为列 1.打开服务器管理器 2.添加角色和功能 3.点击下一步 4.继续下一步 5.继续下一步 6.选择证书服务 7.添加该功能 8.继续下一步 9.继续下一步 10.继续下一步 11.添加证书颁发机构和证书颁发机构web注册 &#xff0c;然后点击下一步 12.点击安装 13.再次…

Linux|centos二进制方式安装系统和网络监控神器prometheus+grafana(装逼神器它来了)

Prometheus简单介绍&#xff1a; Prometheus使用Go语言开发&#xff0c;是Google BorgMon监控系统的开源版本&#xff0c;怎么产生的就不在这讨论了&#xff0c;反正就是香&#xff0c;简单易用。 2016年由Google发起Linux基金会旗下的原生云基金会(Cloud Native Computing F…

apache-atlas-hive-hook-源码分析

Atlas Hook类图 Hive 元数据变更有2种实现&#xff1a; 1)基于 Hook 函数实现&#xff0c;实现类为 HiveHook 2)基于MetaStoreEventListener 实现&#xff0c; 实现类为HiveMetastoreHookImpl 所以提供2 种配置&#xff0c;即配置钩子函数或监听器&#xff0c;我们目前采用的是…

nvm包管理工具下载安装

1&#xff0c;去github官网&#xff0c;输入nvm-windows&#xff0c;点击第一个nvm项目&#xff0c;在右侧点击releases,选择箭头指向的安装包 2&#xff0c;下载很快&#xff0c;但是安装前&#xff0c;得先卸载本机的nodejs,并且为nvm的包创建一个英文文件夹&#xff0c;…

Java---Map双列集合

目录 一、双列集合的介绍 二、Map的使用 1&#xff1a;Map中常见的API &#xff08;1&#xff09;put方法 &#xff08;2&#xff09;remove方法 2&#xff1a;Map的遍历 &#xff08;1&#xff09;通过键找值的方式遍历 &#xff08;2&#xff09;通过键值对对象遍历 &…

FRNet代码

代码目录简简单单&#xff0c;令人心旷神怡。 模型框架&#xff1a; 数据增强包括; 接着看一下数据集&#xff1a; import os from PIL import Image import numpy as np from sklearn.model_selection import train_test_splitimport torch import torch.utils.data as da…

Tomcat+Maven+Servlet安装与部署

文章目录前言一、Tomcat8下载安装二、MavenServlet部署1.创键Maven项目&#xff08;idea2021community&#xff09;2.pom.xml下引入servlet依赖3.main下创建webapp/WEB-INF/web.xml4.验证HttpServlet是否导入&#xff08;配置WebServlet路径&#xff09;5.手动打包web项目6.浏览…

DAMA-CDGA/CDGP数据治理认证包括哪几个方面?

DAMA认证为数据管理专业人士提供职业目标晋升规划&#xff0c;彰显了职业发展里程碑及发展阶梯定义&#xff0c;帮助数据管理从业人士获得企业数字化转型战略下的必备职业能力&#xff0c;促进开展工作实践应用及实际问题解决&#xff0c;形成企业所需的新数字经济下的核心职业…

【夯实Kafka知识体系及基本功】分析一下消费者(Consumer)实现原理分析「原理篇」

Consumer消费者 消费者可以从broker中读取数据。 一个消费者可以消费多个topic中的数据&#xff08;其中一个partion&#xff09;。 Consumer Group&#xff08;消费组&#xff09; 每个Consumer属于一个特定的Consumer Group。 可为每个Consumer指定group name&#xff0c…

自动驾驶--定位技术

[整理自百度技术培训中心课程](https://bit.baidu.com/products?id70) 为什么无人车需要精确的定位系统 在地下车库实现自动泊车的一个非常关键的技术是什么呢&#xff1f;那就是定位技术。 为什么无人车需要一个精确的定位系统。为什么无人车需要精确的定位系统&#xff…

网络线缆连接器和线槽

一、信息插座 1、信息插座简介 信息插座是终端(工作站)与水平干线子系统连接的接口,在水平干线子系统中双绞线的两 端是直接压接到配线架和信息插座中的,不需要跳线。 2、信息插座的配置 综合布线系统的设计,应该根据实际情况确定 所需信息插座个数和分布位置,也就决…

计算机的另一半

本篇先介绍了计算机中数字编码&#xff0c;地址的概念。然后介绍了组成计算机的另外一半内容&#xff0c;也就是CPU&#xff0c;和前面的计算机一半合起来就可以组成一个简易版的计算机了。至此终于大概看到了计算机的全貌。 数字编码系统 这里我们简单说一下计算机里数字编码…

智慧环卫解决方案-最新全套文件

智慧环卫解决方案-最新全套文件一、建设背景二、思路架构三、建设方案四、获取 - 智慧环卫全套最新解决方案合集一、建设背景 城市环境卫生管理是一项复杂而系统的社会工程&#xff0c;是与人民群众生活联系最密切的重要工作之一。环卫水平不仅是一个城市的“脸面”&#xff0…