最简单的git图解(最基本命令)

news2024/11/18 1:34:36

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/11633.html

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

相关文章

春节静态HTML网页作业模板 传统节日文化网站设计作品 静态学生网页设计作业简单网页制作

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

python计算长方形面积 青少年编程电子学会python编程等级考试一级真题解析2022年6月

目录 python计算长方形面积 一、题目要求 1、编程实现 2、输入输出

TCP粘包和拆包

TCP粘包和拆包 &#xff08;1&#xff09;TCP是面向连接的&#xff0c;面向流的&#xff0c;提供可靠性服务。收发两端&#xff08;客户端和服务端&#xff09;都要有一一成对的socket&#xff0c;因此&#xff0c;发送端为了将多个发给接收端的包&#xff0c;更有效的发给对方…

【前端】Vue+Element UI案例:通用后台管理系统-代码总结

文章目录前言项目文件目录apimockServehome.jspermission.jsindex.jsmock.jsuser.jsassertcomponentsCommonAside.vueCommonHeader.vueCommonTags.vuedataechartsDataorder.jsuser.jsvideo.jsmockDatatableData.jsuserData.jsvideoData.jsCountData.jsMenuData.jsTableData.jsT…

389. 找不同(简单不一定知道)

问题描述&#xff1a; 给定两个字符串 s 和 t &#xff0c;它们只包含小写字母。 字符串 t 由字符串 s 随机重排&#xff0c;然后在随机位置添加一个字母。 请找出在 t 中被添加的字母。 示例 &#xff1a; 示例 1&#xff1a; 输入&#xff1a;s "abcd", t …

大学生抗疫逆行者网页作业 感动人物HTML网页代码成品 最美逆行者dreamweaver网页模板 致敬疫情感动人物网页设计制作

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

多维时序 | MATLAB实现ELM极限学习机多维时序预测(股票价格预测)

多维时序 | MATLAB实现ELM极限学习机多维时序预测(股票价格预测) 目录 多维时序 | MATLAB实现ELM极限学习机多维时序预测(股票价格预测)效果一览基本介绍程序设计结果输出参考资料效果一览 基本介绍

MySQL-僵持锁

前言 一个僵持锁&#xff08;deadlocks&#xff09;是指锁处于僵持的状态&#xff0c;持有锁的事务既得不到期望的资源&#xff0c;也不愿意释放其他事务需要的资源&#xff0c;也就是&#xff0c;多个锁相互之间都持有其他锁所需的资源&#xff0c;所有的事务都在等待各自需要…

防止重复下单(redis+数据库唯一索引requestId实现幂等)

文章目录为什么会重复下单如何防止重复下单利用数据库实现幂等利用Redis防重为什么会重复下单 为什么会重复下单&#xff0c;对于订单服务而言&#xff0c;就是接到了多个下单的请求&#xff0c;原因可能有很多&#xff0c;最常见的是这两种&#xff1a; 用户重复提交网络原因…

使用easygui制作app

【小白从小学Python、C、Java】 【计算机等级考试500强双证书】 【Python-数据分析】 使用easygui制作app [太阳]选择题 对于以下python代码表述错误的一项是? import easygui easygui.msgbox("我是msgbox","msgbox标题") choices["A",…

学生网页设计作业源码(HTML+CSS)——海贼王6页代码质量好

HTML实例网页代码, 本实例适合于初学HTML的同学。该实例里面有设置了css的样式设置&#xff0c;有div的样式格局&#xff0c;这个实例比较全面&#xff0c;有助于同学的学习,本文将介绍如何通过从头开始设计个人网站并将其转换为代码的过程来实践设计。 ⚽精彩专栏推荐&#x1…

【Pytorch with fastai】第 13 章 :卷积神经网络

&#x1f50e;大家好&#xff0c;我是Sonhhxg_柒&#xff0c;希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流&#x1f50e; &#x1f4dd;个人主页&#xff0d;Sonhhxg_柒的博客_CSDN博客 &#x1f4c3; &#x1f381;欢迎各位→点赞…

数据结构之线性表的顺序存储结构

配套环境 clion + g++ 顺序存储的定义 线性表的顺序存储结构,指的是用一段地址连续的存储单元一次存储线性表中的数据元素 设计思路 使用一维数组来实现顺序存储结构 存储空间:T* m_array 当前长度:int m_length 顺序存储结构的元素获取操作 判断目标位置是否合法 如…

Backblaze 2022 Q3 硬盘故障质量报告解读

在9月份&#xff0c;我们更新了Backblaze 2022上半年的中期质量报告解读&#xff08;Backblaze2022中期SSD故障质量报告解读&#xff09;&#xff0c;基于报告中的分析数据&#xff0c;Backblaze也向外界传递作证了一个信息&#xff1a;固态硬盘SSD的长期可靠性比机械硬盘HDD要…

听说某宝抢购脚本大家都会了?那就在来个某东茅台抢购脚本吧。

前言 某宝脚本一搜能搜一大堆&#xff0c;就是不知道具体有没有用&#xff0c;但是这款某东的代码于11-17还是可用的&#xff0c;大家拿去白嫖吧&#xff01; 需要用到的一些工具 Python版本&#xff1a;3.7.8相关模块&#xff1a;DecryptLogin模块&#xff1b;argparse模块&am…

webpack5 Preload / Prefetch

代码分离 | webpack 中文文档webpack 是一个模块打包器。它的主要目标是将 JavaScript 文件打包在一起&#xff0c;打包后的文件用于在浏览器中使用&#xff0c;但它也能够胜任转换&#xff08;transform&#xff09;、打包&#xff08;bundle&#xff09;或包裹&#xff08;pa…

【云原生 | 44】Docker搭建Registry私有仓库之管理访问权限

&#x1f341;博主简介&#xff1a; &#x1f3c5;云计算领域优质创作者 &#x1f3c5;2022年CSDN新星计划python赛道第一名 &#x1f3c5;2022年CSDN原力计划优质作者 &#x1f3c5;阿里云ACE认证高级工程师 &#x1f3c5;阿里云开发者社区专…

C++ Reference: Standard C++ Library reference: Containers: deque: deque: rend

C官网参考链接&#xff1a;https://cplusplus.com/reference/deque/deque/rend/ 公有成员函数 <deque> std::deque::rend C98 reverse_iterator rend(); const_reverse_iterator rend() const; C11 reverse_iterator rend() noexcept; const_reverse_iterator rend() c…

【Vue】VueX 的语法详解(3)

在VueX&#xff08;叉&#xff09;里面有一个潜移默化&#xff0c;或者说本质上的一个约束是什么&#xff1f; mutation里面只允许‍‍写同步代码&#xff0c;不允许写‍‍异步代码&#xff0c;虽然它不强制的限制你说你写了就给你报错&#xff0c;但实际上它的设计里面要求‍‍…

2022跨境出海:中东地区网红营销现状及特点

提到中东&#xff0c;大家的第一印象可能就是“头顶一块布&#xff0c;天下我最富”的土豪形象&#xff0c;近期的卡塔尔世界杯也再次给外界展示了他们的壕无人性。但由于宗教影响&#xff0c;他们的很多线下交际活动受到限制&#xff0c;也使得他们在互联网世界十分活跃&#…