mac版本一文打通git教程!史上最详细解析!(代码片段)

来老铁干了这碗代码 来老铁干了这碗代码     2022-12-06     754

关键词:


第一章 Git概述

Git是一个免费的、开源的分布式版本控制系统,可以快速高效处理项目

占地小、易学习、性能好、廉价

PS:学习git,linux命令很重要,因为是同一个爸爸


1.1 何为版本控制

版本控制是一种记录文件变化,以便将来查阅特定版本修订情况的系统。

最重要的修改文件修改的历史记录,从而让用户能查看版本,切换版本。


1.2 为什么需要版本控制

个人开发过渡到团队开发,团队间需统一版本,互相协调。


1.3 版本控制工具

集中式版本控制工具

CVS、SVN、VSS等

都有一个中央服务器,保存所有文件的修订版本,所有人都能通过客户端连接到这台服务器,取出最新的文件,或提交更新。

好处是管理员可以掌握每个开发者的权限,并且统一管理,协调进度,维护简单。

坏处是如果中央服务器单点故障,则全部无法工作

分布式版本控制

以Git为例,客户端提取的不是最新版本的文件快照,而是把代码仓库完整的镜像下来(本地库),这样任何一处协同工作用的文件发生故障,事后都可以用其他客户端的本地仓库进行恢复。

解决了集中式版本控制系统的缺陷。

且:服务器断网情况下也能进行开发,每个客户端保存的也都是完整项目(包含历史记录)


1.4 Git简史

在这里插入图片描述


1.5 Git工作机制

在这里插入图片描述
以上图片为工作区、暂存区、本地库之间的关联,在本地库之上还有一层远程库。如下图所示:

工作区:存放代码的位置

暂存区:把工作区的代码add到暂存区

本地库:暂存区commit到本地库。一旦提交到本地库,就生成了历史版本,无法删除

远程库:本地库push到远程库(全互联网或全局域网都生成了历史版本)


1.6 Git和代码托管中心

代码托管中心是基于网络服务器的远程代码仓库,一般我们简单称为远程库,常见的远程库

局域网常见的代码托管中心:GitLab

互联网常见的代码托管中心:GitHub、Gitee


第二章 Git安装

mac版本:打开终端,输入git,则自动安装

查看git安装目录:which git

Windows版本——>传送门


第三章 Git常用命令

3.1 配置基本信息(只需设置一次)

  1. 配置用户名
    git config --global user.name “shaonaiyi”

    解释:作用是区分不同操作者身份。因此不设置无法提交代码。

  2. 配置用户邮箱
    git config --global user.email “shaonaiyi@163.com”
    解释:这个邮箱是虚拟邮箱。

  3. 配置大小写敏感
    git config --global core.ignorecase false
    以后想要修改还是使用上面的指令。


3.2 初始化本地库

作用:把这个目录变为git可以管理的仓库

语法:git init

步骤:新建文件夹,在终端中进入,输入命令后,该文件夹内就会生成.git隐藏文件


3.3 查看本地库状态

作用:查看本地库的分支、提交情况等

语法git status

示例

1、直接运行git status:
在这里插入图片描述


2、现在我们创建一个hello.txt,再次运行git status,得:
在这里插入图片描述

显示有一个未被追踪过的文件,也就是有文件未被添加到暂存区


3.4 添加暂存区

接上。

作用:将文件添加到暂存区

语法git add hello.txt

示例
在这里插入图片描述

将文件从暂存区删除git rm --cached hello.txt


3.5 提交本地库

接上。

作用:将暂存区的文件提交到本地库,形成历史版本(版本信息)。

语法git commit -m “日志信息” “文件名”

示例
在这里插入图片描述


3.6 修改文件

接上。

作用:模拟企业开发中的版本迭代

示例:首先修改文件,再次查看本地库状态,发现红色的信息,提示被修改。解决办法是,首先添加到暂存区,再提交本地库
在这里插入图片描述


3.7 历史版本

3.7.1 查看历史版本

写法git reflog:查看历史版本

版本号、指针指向master分支、版本名称为first commit

在这里插入图片描述

写法git log 查看详细日志
在这里插入图片描述


3.7.2 版本穿梭

写法git reset --hard

示例
在这里插入图片描述

原理:通过指针实现

在这里插入图片描述

解释:head是头指针,master是分支,first等是某一分支下的版本。


3.8 其他常用命令

  1. 查看Git的配置信息
    git config --list

  2. 查看版本

    git --verson

  3. 查看文件安装位置

    which git


3.9 Linux常用命令

进入终端:control + space,输入终端

查看当前目录:pwd

进入根目录:cd

返回上一级:cd …

删除文件:rm 文件名

列出文件夹下所有文件:ls

新建文件夹:mkdir

查看某文件的安装目录:which …

查看文件内容:cat hello.txt

vim:文本编辑器

vim编辑器的三种模式

1、命令模式

2、插入模式

3、末行模式

命令模式:yy复制一行,dd删除一行,p粘贴

底行模式:wq保存并退出,q!不保存退出


第四章 Git分支操作

4.1 分支概念

概念:在版本控制过程中,同时推进多个任务,为每个任务,我们可以创建每个任务的单独分支。使用分支意味着程序员可以把自己的工作从开发主线上分离出来,开发自己分支的时候,不会影响主线分支的运行。

对于初学者而言,分支可以简单理解为副本,其底层是对指针的引用

在这里插入图片描述


4.2 分支的好处

同时并行推进多个功能开发,提高开发效率。

各个分支在开发过程中,如果某一个分支开发失败,不会对其他分支有任何影响。失败的分支删除重新开始即可。


4.3 分支的操作

git branch 分支名:创建分支(基于最新的分支,引申出来的分支)

git branch -v:查看分支

git checkout 分支名:切换分支

git merge 分支名:把指定的分支合并到当前分支上(站在当前分支上,合并想喝合并的分支)


产生冲突

合并分支时,两个分支在同一个文件的同一个位置有两套完全不同的修改。Git无法替我们决定使用哪一个。必须人为决定新代码的内容

合并文件如果出现冲突,需要人为修改代码,然后添加暂存区,提交到本地库


第五章 Git团队协作机制

团队内协作

岳不群在本地库创建华山剑法项目,push到远程库。

令狐冲在远程库中把代码clone下来,优化一下,又push进远程库

在这里插入图片描述

跨团队协作

团队1感觉项目写的不行,于是想让大哥帮忙修改一下,于是大哥从团队1的远程库中fork项目,到自己的库中,改完在merge回去

在这里插入图片描述


第六章 GitHub操作

6.1 创建远程仓库

在这里插入图片描述

在这里插入图片描述


6.2 远程仓库操作

6.2.1 创建别名

查看别名:git remote -v

创建别名:git remote add ori https://github.com/Tokyo-z/git-demo.git

原理:指针


6.2.2 推送本地库到远程库

语法:git push 别名or网址 分支

输入github的账号密码即可

在这里插入图片描述


6.2.3 拉取远程库到本地库

语法:git pull 别名or网址 存放拉取内容的分支

git pull ori master


6.3 跨团队协作

先把别人的项目fork到我这,再进行操作。
其他操作与团队内协作的操作一致。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-E22sNm2W-1626098030788)(/Users/zhanglong/Library/Application Support/typora-user-images/image-20210710212956686.png)]


第七章 IDEA集成Git

7.1 配置Git

在这里插入图片描述

7.2 初始化 & 添加 & 提交

初始化

将普通项目改为Git配置的模式
在这里插入图片描述
在这里插入图片描述

可以看到已经被改造成了Git格式
在这里插入图片描述

添加

此时我们发现文件变红了,因为没有吧文件添加到暂存区。 具体操作如下:
在这里插入图片描述

操作完成后,文件变绿
在这里插入图片描述

提交

添加到暂存区后,我们commit一下

在这里插入图片描述

提交后,文件重新变回正常颜色

在这里插入图片描述

7.3 切换版本

只要更改代码,我们发现代码变蓝了,说明这个代码被追踪了。 因此重复操作,add + commit,将提交版本置为second

在这里插入图片描述

提交后的分支

又创建了第三个版本:

在这里插入图片描述

切换版本:

在这里插入图片描述

此时,我们看到头指针指向了第二个版本
在这里插入图片描述

7.4 创建分支

在这里插入图片描述

查看当前分支 & 切换分支

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5aRth32I-1626098030793)(/Users/zhanglong/Library/Application Support/typora-user-images/image-20210711203933492.png)]

7.5 合并分支

要将hot-fix分支合并到master上

无冲突合并

首先在热修分支创建新的版本并提交
在这里插入图片描述

接下来切换到master,进行如下操作:

在这里插入图片描述

合并成功后示意图:
在这里插入图片描述

冲突合并

在热修分支 和 master上到同一行同时更改代码,制造冲突,并提交

我们发现,发生了冲突。 此时需要点击merge,手动合并代码
在这里插入图片描述

合并成功后图示:
在这里插入图片描述

第八章 IDEA集成GitHub

8.1 分享项目到GitHub

GitHub就相当于远程库,分享到GitHub上就相当于分享到远程库

1、在Plugins里下载GitHub插件,下载成功后,在Version Control中显示。

2、设置GitHub账号,如果设置失败,见储备知识

3、将项目分享到GitHub上

在这里插入图片描述

8.2 推送代码到GitHub

注意:Push是将本地库代码推送到远程库,如果本地库代码跟远程库代码版本不一致,push的操作是会被拒绝的。

要想Push成功,本地库版本一定要高于远程库版本!

因此,当想要动手修改本地库代码时,要先pull拉取一下远程的代码,将本地代码更新到最新后,再修改、推送!
在这里插入图片描述
在这里插入图片描述

8.3 拉取代码到本仓库

在GitHub中,将项目编辑,新增代码,

用法同上

8.4 clone代码

把项目从本地删除, 可以从GitHub上clone回来
在这里插入图片描述

8.4 七、八章总结

第七章只用到了add + command,因此涉及到的路线是本地代码->暂存区->本地库

第八章用到的是push和pull,因此涉及到的路线是本地代码->远程库

第九章 自建代码托管平台-GitLab

GitLab的安装、下载、配置省略。。。(需要虚拟机)

IDEA集成GitLib

1、下载GitLab插件
在这里插入图片描述

2、连接服务器
在这里插入图片描述

3、操作(以push为例)

在这里插入图片描述

在url里添加上gitLib的链接即可

储备知识

git clone 与 git pull的区别

git clone 与 git pull 相同点

相同点:都是从远程服务器拉取代码到本地

git clone 与 git pull 不同点

git clone

是在本地没有版本库的时候,从远程服务器克隆整个版本库到本地,是一个本地从无到有的过程。

git pull

在本地有版本库的情况下,从远程库获取最新commit 数据(如果有的话),并merge(合并)到本地。

git pull = git fetch + git merge

使用场景

通常情况下,远程操作的第一步,是使用git clone从远程主机克隆一个版本库到本地。

本地修改代码后,每次从本地仓库push到远程仓库之前都要先进行git pull操作,保证push到远程仓库时没有版本冲突。

Git|GitHub|Gitee|GitLab区别

Git:分布式版本控制系统

GitHub:基于Git原理的外国平台

Gitee:基于Git原理的国内平台

GitLab:基于Git原理的局域网平台

分盘

在这里插入图片描述

programFiles存放64位,x86存放32位

修改git的端口号

打开gitbash,进入仓库,输入指令: vim .git/config,或者windows下进到仓库文件夹,进入.git 用编辑器打开

修改后保存即可

解决IDEA集成GitHub失败问题

一. 出现这种问题的原因:

在这里插入图片描述

按图查看

在这里插入图片描述

你会发现你这里缺失了IDEA 的授权tokens

在这里插入图片描述

正常如下:
如果有授权,可以删掉,重新按下面步骤授权一次,因为这个秘钥不能二次查看

在这里插入图片描述

二. 解决方案:

解决步骤

1.点击加号,选择第二个登录方式

在这里插入图片描述

2.核心步骤
稍微等一会,会自动跳转

在这里插入图片描述

3.添加IDEA 授权的tokens

在这里插入图片描述

4.生成tokens

在这里插入图片描述

5.复制令牌授权码

在这里插入图片描述

6.回到IDEA 粘贴授权码

在这里插入图片描述

7.登陆成功

在这里插入图片描述

Git - IDEA 来回切换分支引起报错

当 Git 切换分支的时候,特别是当某一个A分支Module本来是有的,但是切换到B分支后没这个Module了,这时候再切回A分支去,此时该Module会错乱。

解决方案:

1、关闭IDEA,删除**.idea**文件夹即可,重新再加载项目试试

2、配置忽略文件

指针颜色说明

黄色:版本指针

绿色:分支指针

idea连接GitHub提示Connection reset

原因:访问外网太慢,时间限制到后默认无法访问。

打开:
http://github.global.ssl.fastly.net.ipaddress.com/ 进行查询IP地址,把查询到的IP地址,复制到自己的hosts文件中。

hosts 文件位置:
在这里插入图片描述

打开文件

将打开查找到的路径ip

img

将ip配置到host:方法如下显示

在文档最末尾添加:

img

然后点击保存

退出idea重新进入,发现可以运行了

git史上最易上手详细教程(代码片段)

...  写的非常好,记录下!!!廖雪峰的Git教程https://www.liaoxuefeng.com/一、Git简介初始化一个Git仓库,使用gitinit命令。添加文件到Git仓库,分两步:使用命令gitadd<file>,注意,可反复多次使用... 查看详情

gradle史上最详细解析

...师来说编译/打包等问题立即就成痛点了。一个APP有多个版本,Release版、Debug版、Test版。甚至针对不同APPStore都有不同的版本。在以前ROM的环境下,虽然可以配置Android.mk,但是需要依赖整个Android源码,而且还不能完全做到满足条... 查看详情

如何利用idea提交本地代码到git远程仓库,史上最详细教程,建议收藏!

1.首先在gitee上注册一个账号2.在gitee创建一个远程仓库3.idea配置git注意git要提前下载配置好4.建立一个简单项目5.建立本地仓库本地仓库选择在本项目即可6.建立本地仓库与远程库连接7.提交代码到远程库中8.成功! 查看详情

史上最通俗易懂!一文明白git是干嘛的

git的最基本作用是版本控制,比如你写一个文档,老板一直让你改,这时笨的人会在原文档上直接改,聪明一点的会复制一下原文档,在副本上修改,这时老板说你的第三版比较好,笨的人煞笔了。。&... 查看详情

史上最通俗易懂!一文明白git是干嘛的

git的最基本作用是版本控制,比如你写一个文档,老板一直让你改,这时笨的人会在原文档上直接改,聪明一点的会复制一下原文档,在副本上修改,这时老板说你的第三版比较好,笨的人煞笔了。。&... 查看详情

python爬虫入门到实战-史上最详细的爬虫教程

马哥高薪实战学员【Python爬虫入门到实战-史上最详细的爬虫教程,限时免费领取】爬虫分类和ROBOTS协议爬虫URLLIB使用和进阶爬虫URL编码和GETPOST请求 查看详情

python爬虫入门到实战-史上最详细的爬虫教程

马哥高薪实战学员【Python爬虫入门到实战-史上最详细的爬虫教程,限时免费领取】爬虫分类和ROBOTS协议爬虫URLLIB使用和进阶爬虫URL编码和GETPOST请求 查看详情

史上最详细windows版本搭建安装reactnative环境配置

说在前面的话:感谢同事金晓冰倾情奉献本环境搭建教程之前我们已经讲解了ReactNative的OSX系统的环境搭建以及配置,鉴于各大群里有很多人反应在Windows环境搭建出现各种问题,今天就特意更新一贴来说明。关于osx环境搭建以及re... 查看详情

史上最详细的sqlmap使用教程(代码片段)

史上最详细的sqlmap使用教程1.sqlmap简介2.初级扫描方案探测是否存在sql注入漏洞查看数据库信息3.高级扫描方案绕过waf探测等级和危险等级(—level—risk)伪造HttpReferer头部执行指定的SQL语句(—sql-shell)执行操作系统命令(—os-shell)读... 查看详情

史上最浅显易懂的git教程!

  本教程只会让你成为Git?用户,不会让你成为Git专家。很多Git命令只有那些专家才明?白(事实上我也不明白,因为我不是Git专家),但我保证这些命令可能你?一辈?子都不会?用到。既然Git是一个工具,就没必要把时间浪... 查看详情

史上最简单的github教程

...私有软件项目的托管平台,因为只支持Git作为唯一的版本库格式进行托管,故名GitHub。GitHub于2008年4月10日正式上线,除了Git代码仓库托管及基本的Web管理界面以外,还提供了订阅、讨论组、文本渲染、在线文件编... 查看详情

移植qt5.6到嵌入式开发板(史上最详细的qt移植教程)

目前网上的大多数QT移植教程还都停留在qt4.8版本,或者还有更老的Qtopia,但是目前Qt已经发展到最新的5.7版本了,我个人也已经使用了很长一段时间的qt5.6forwindows,本文就来介绍一下QT在嵌入式环境的搭建。 移植以到JZ2440为例... 查看详情

史上最简单的intellijidea教程

...在智能代码助手、代码自动提示、重构、J2EE支持、各类版本工具(Git、SVN、GitHub等)、JUnit、CVS整合、代码分析和创新的GUI设计等方面的功能都值得称道。至于Eclipse博主接触的不多,因此也无法比较,但殊途同归,无论选择什么集... 查看详情

史上最详细的ue4安装教程(没有之一,就是史上最详细,不服气你来打我呀)

知识兔这篇文章为大家带来了史上最详细的UE4安装教程(没有之一,就是史上最详细,不服气你来打我呀),主要包含下面几个部分。0-软硬件配置1-创建EpicGames账户2-下载和安装启动器3-登陆启动器(这块... 查看详情

androidstudio系列教程(转载)

史上最详细的AndroidStudio系列教程一--下载和安装:http://segmentfault.com/a/1190000002401964史上最详细的AndroidStudio系列教程二--基本设置与运行:http://segmentfault.com/a/1190000002411926史上最详细的AndroidStudio系列教程三--快捷键:http://segmentfaul... 查看详情

史上最详细github使用教程(英文烂的血泪史)

...近在学习github,  英文不好的我看着头疼。网上的教程也不够详细。 仅以此文献给没过四级的丸子们。。。没有排版将就着看。。。 使用github 目的:托管项目代码 基本概念:仓库(Repository)仓库用来存... 查看详情

两因素重复测量方差分析,史上最详细spss教程!

原文地址 http://www.sohu.com/a/202657022_4893122017-11-0618:34一、问题与数据研究者想知道短期(2周)高强度锻炼是否会减少C反应蛋白(C-ReactiveProtein,CRP)的浓度。研究者招募了12名研究对象,并让研究对象参与两组试验:对照试验和干预... 查看详情

黄聪:史上最详细的kali安装教程没有之一

首先在vm里面新建虚拟机,直接选择典型,然后下一步。 1   2然后到了这一步,选择中间的安装程序光盘镜像文件,然后去文件里面找你自己下载的镜像,这时候可能系统会出现无法检测此光盘镜像中的操作系统... 查看详情