git保姆级教程(概述、理论、指令、创建及代码初始化完整步骤、分支与冲突、遇到的问题)

news2024/11/19 17:35:04

目录

  • 版本控制
  • 安装
  • 配置
  • 理论部分
  • 项目创建及克隆
    • 创建全新仓库
    • 克隆远程仓库
  • 文件操作
    • 理论
    • 实操
  • 使用码云
  • 分支与冲突
    • 实操说明
  • 遇到的问题
    • vscode配置问题
    • vscode克隆慢的问题
  • 后记

版本控制

概述:
版本迭代,更新速度快,于是需要版本管理器。

作用:
跨区域多人协同开发、追踪文件历史记录、保护源代码和文档、统计工作量、并行开发提高效率、跟踪记录整个软件开发过程、减轻负担节省时间降低错误…

常见工具:
Git,SVN等等。Git相对来说较流行。接下来我们看看它们的特点及区别:

Git与SVN介绍:

SVN是集中版本控制,所有版本数据都保存在服务器上,协同开发者从服务器上同步更新或上传自己的修改;

Git每个人都拥有全部代码,这样就可以在本地查看所有版本历史,也可离线在本地提交,联网后就可以push到服务器或者其他用户那里。且只要由一个用户的设备没有问题就看可以恢复所有数据,但是本地存储空间也被占用。
但是不会因为服务器损坏而造成不能工作的情况。(巨大好处)
Git和SVN区别:

SVN集中式版本控制,版本库是集中放在中央服务器的,工作的时候,用自己的电脑,从服务器得到最新版本然后工作,完成工作后推送到中央服务器。必须联网才能工作。

Git是分布式版本控制,没有中央服务器,每个人的电脑都是一个完整的版本库,工作不需要联网,协同时,同一个文件两个人改,两个人只需要互相推送给对方,就可以看到对方的修改了。

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

安装

首先是下载,可以在官网下对应的。

但是官网很慢,所以我们可以靠tb镜像:
tb镜像下载git

下最新版,根据自己电脑的情况,比如我是64位我就下64的。

下载完毕后直接一路默认。选编译器那块,可以选自己用的,如vim、vscode。

下载完后桌面单机右键可以看到:
在这里插入图片描述
有以上两个其实就是安装成功了。

其中,GUI是图形界面,不适合初学者;一般我们都用的是上面的Bash,点击后会进入命令行输入框。

配置

打开Git Bush

可以查看git中的所有配置:

$ git config -l

配置用户名和密码:

git config --global user.name "名称"
git config --global user.email "邮箱"

查看当前用户配置

git config --global --list

理论部分

Git本地有三个工作区域:工作目录、暂存区、资源库。加上远程的git仓库(Remote Directory)就是四个工作区域。关系如下:

在这里插入图片描述
Workspace:工作区,你平时存放项目代码的地方;
index/Stage:暂存区,用于临时存放改动的地方,事实上它只是个文件,保存即将提交的文件列表信息;
Repository:仓库区(或本地仓库),安全存放数据的位置,这里面有提交所有版本的数据,其中Head指向最新放入仓库的版本。

git工作的流程:
在工作目录中添加、修改文件->
将需要进行版本管理的文件放入暂存区域->git add
将暂存区域的文件提交到git仓库->git commit
推送到远程仓库。 git pull

因此,git管理文件有三种形态:已修改、一咱群、已提交。

项目创建及克隆

git要记住的是如下6个命令:
在这里插入图片描述
重点记住add、commit、push

如果我们要创建本地仓库有两种方式:一种是创建全新的仓库,另一种是克隆远程仓库。

创建全新仓库

需要用到git管理的项目的根目录执行。

我设置了一个空的文件夹:
在这里插入图片描述
接着,右键选择Git Bash,进行初始化:

$ git init

初始化后会出现一个.git文件,但是这个文件是默认隐藏的,需要设置取消隐藏才能看到:
在这里插入图片描述

克隆远程仓库

如果在远程仓库上有项目,可以使用进行克隆:

$ git clone url

但是需要注册github或者gitee账号,在项目里面可以找到clone。

文件操作

理论

版本控制本质上是对文件的版本控制。要对文件进行修改、提交等操作,首先要知道文件当前在什么状态,才能确定下一步对文件的操作。

文件的状态有以下四种:

Untracked:未跟踪状态,此文件在文件夹中,但并没有加入到git库,不参与版本控制,通过git add状态会变为暂存态(staged);

Unmodify:文件已入库,未修改,版本库中文件快照内容与文件夹完全一致,这种类型要么就是变为被修改,要么就是被移除版本库成为第一种状态下的文件;

Modified:文件已修改,仅仅是修改,并没有进行其他操作,这个文件也有两个去处,通过git add添加到暂存区,或者使用git checkout则丢弃修改过,这个git checkout即从苦衷取出文件,覆盖当前修改。

staged:暂存状态,执行git commit则将修改同步到苦衷,库中文件和本地文件又变为一致,文件为入库状态。执行git reset head filename取消暂存,文件状态为修改状态。

如何查看文件状态?介绍一条语令:

$ git status

作用:
git status 命令用于显示版本库和暂存区的状态。它允许我们看到被追踪的、未被追踪的文件和变化。这个命令不会显示任何提交记录或信息。

大多数情况下,它是用来显示Git Add和Git commit命令之间的状态。我们可以检查更改和文件是否被跟踪

实操

现在我们来实操,还是刚刚新建的文件夹,我们来用一下刚刚学习的git status指令,最后的结果是:
在这里插入图片描述
现在我们创建一个新的文件:
在这里插入图片描述
再用这条命令试一下:
在这里插入图片描述
现在已经显示文件了,不过文件还是一个未跟踪=的状态。

我们现在来把它放到我们的暂存区:(注意后面有个.)

$ git add .

在这里插入图片描述
再利用git status查看下:
在这里插入图片描述
意思是暂存区有文件啦。

接着我们把它提交到本地仓库:

git commit -m “消息内容”

这里一定要有-m,-m的作用是message,是提交信息:
在这里插入图片描述
接着我们再看看状态:
在这里插入图片描述
截止到目前位置,新的文件已经保存在了本地仓库。

使用码云

github有墙,==国内推荐gitee。==公司有的时候也会搭建自己的git服务器。(gitlab)

1.本教程使用gitee。首先,注册信息。(百度上搜官网即可)

2.登录后,我们设置本机绑定SSH公钥,实现密码免登录!(免密码登录,这一步很重要,因为码云是远程仓库,我们平时工作在本地仓库

我们先来配置下公钥。

现在在本机生成下公钥,找到自己电脑中的目录:

C:\user\Administrator\.ssh

是个空文件夹。在这个文件夹使用git Bash,输入命令:

ssh-keygen -t rsa

在这个命令中,-t rsa是官方的一种加密算法。

注意,一直点回车
在这里插入图片描述
点完之后,就会发现文件夹多了两个文件:
在这里插入图片描述
这就是公钥。

接着复制公钥内容(下面那个文件),来到gitee网站:
点击设置:
在这里插入图片描述
左侧导航里面:
在这里插入图片描述
点击SSH公钥:
在这里插入图片描述
在公钥中把刚刚复制的粘贴上去,点击确定:
在这里插入图片描述
以上就已经把码云上的仓库与本地仓库绑定了。

3.创建一个自己的码云仓库:
在这里插入图片描述
点击后填写详情信息,私有对外不可见,公开所有人可见。公开需要开源许可证,也就是一些规则,开源是否可以随意转载,开源但是不能商业使用等等限制。

现在我们让我们本地的仓库与码云仓库关联,首先复制码云仓库中的url:
在这里插入图片描述
在文件夹中使用

git clone 地址

在这里插入图片描述
做完后会发现现在这个仓库和本地是一致的。

其实就是已经建立起链接了。

4.生成基本代码,上传代码到码云:

一开始没有代码,可以自动生成一些代码:
在这里插入图片描述
上面代码的生成会有提示的。

接着,我们可以在本地pull以下,同步一下:
在这里插入图片描述
现在我们自己写一个文件:
在这里插入图片描述
接着,在git bash中,先查询,再添加到暂存区,接着添加到本地仓库,最后上传到码云,然后和码云同步 。这个步骤我将在下面详细演示一下,包括代码和结果。

查询现在的情况:

$ git status

在这里插入图片描述
添加到暂存区:

$ git add .

接着status一下:
在这里插入图片描述
然后再提交到本地仓库:

$ git commit -m “new file 文件名"

在这里插入图片描述
status一下:
在这里插入图片描述
最后我们再push到码云:

git push

在这里插入图片描述
接着我们来看一下码云:
在这里插入图片描述

最后再同步一下,也就是拉取代码,然后同步到本地:

git pull

在这里插入图片描述
来看一下本地的代码:
在这里插入图片描述
以上就是与git有关的相关操作,掌握这些基本使用是没有问题了。

分支与冲突

如果一个项目正准备开发上线,突然一个bug过来解决不了,或者是发现了根源上的问题,很容易耽误上线。所以,项目可以有几个版本,一个稳定版本,一个修改版本等等。

稳定版本不作更改,只用于上线,其他版本可以用作更改,也可也一个人一个版本进行更改。

这里先来看一下分支的有关命令:

# 列出所有本地分支
git branch

# 列出所有远程分支
git branch -r

# 新建一个分支,但仍然停留在当前分支
git branch [branch-name]

# 新建一个分支,并切换到该分支
git checkout 0b [branch]

# 合并指定分支到当前分支
$ git marge [branch]

# 删除分支
$ git branch -d [branch-name]

# 删除远程分支
$ git push orgin --delete [branch-name]
$ git branch -dr [remote/branch]

实操说明

查看当前分支(只有个主分支master):
在这里插入图片描述
新建分支(开发分支)
在这里插入图片描述
再次查询:
在这里插入图片描述
多个分支并行执行会导致代码不冲突,同时存在多个版本。

现在我们说一下合并,如果A有一段代码需要更改,A在自己的分支里面更改,B在自己的分支里修改A的代码,修改完毕后A把B的代码合并了,就会产生冲突。

如果冲突,就需要协商即可。

master主分支应该非常稳定,用来发布新版本,一般情况下不允许在上面工作,工作一般情况下在新建的分支dev上工作,工作完后,准备发布,可以合并奥master分支上来。

遇到的问题

vscode配置问题

笔者是做前端的,一般情况下,前端主要用到的编辑器vscode上是可以集成开发的,只需要配置git的git.exe地址即可。

但是如果不小心关闭了内置的git,没办法在扩展中下载。这个时候,没必要卸载,只需要下载类似这种图标的插件,git会自动被打开。
在这里插入图片描述

vscode克隆慢的问题

自己开发的项目,或者是克隆别人的项目,有的时候会一直停留在克隆的状态,取消的话就算克隆失败了。

这种情况,往往是项目设置的问题,而且问题很多,所以一般的解决办法,是不坚持用vscode,而是用GUI Bash的语句进行操作。

后记

本篇文章内容比较全面,中间也有很多我踩过的坑,都在上面避雷了,希望对大家有帮助。

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

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

相关文章

Python大厂经典面试题附答案,提前做好准备

对于大部分Python学习者来说,基础核心知识基本已经掌握了,但"纸上得来终觉浅,绝知此事要躬行",要想完全掌握Python,还得靠实践应用。 比如面试的时候,面试官会出其不意的问一些问题,今天给大家分…

浅谈月出月落和月相的计算方法以及替代工具 - 月出月落和月相 API

引言 如果你想知道精确的月出月落时间,又或者你想设计一个月出月落时间查询的应用,又或者你只是好奇点进来了,还是可以过来围观一下涨涨知识,今天想跟大家聊一聊的是月出月落的计算方法以及替代工具 - 月出月落和月相 API 。 月…

污水除磷主要方法,磷酸盐的深度去除,正磷、次磷、亚磷树脂吸附

化学沉淀法除磷工艺虽除磷效率相对较好,但消耗化学药剂并产生大量的化学污泥,处理成本相对昂贵;而传统的生物处理工艺操作简单,但磷去除效率较低,难以满足出水要求。 Tulsimer A-107 是一款专门开发的,基于…

win10中rclone挂载minio的多实例安装方式

1.下载rclone安装包&#xff0c;复制多个.exe并重命名 2.1添加rclone1server.xml <service><id>rclone1</id><name>rclone1</name><description>rclone1service</description><executable>rclone</executable><argum…

有没有中国版的chatGPT?

ChatGPT是一个基于人工智能的聊天机器人&#xff0c;它可以通过自然语言处理技术与用户进行交互和对话。ChatGPT的目的是为用户提供便捷的问答服务和娱乐&#xff0c;它可以回答各种问题&#xff0c;例如天气、新闻、历史、文化、科技、娱乐等等。ChatGPT的核心技术是基于GPT模…

AOP的工作流程和核心概念及代理对象

1. 工作流程及核心概念 Spring容器启动读取所有切面配置中的切入点&#xff0c;未配置的切入点不进行读取 初始化bean&#xff0c;判断bean对应的类中的方法是否匹配到任意切入点 匹配成功&#xff1a;在Spring框架中&#xff0c;Bean初始化时会通过扫描程序中的带有特定注解的…

【学习笔记】低速数字输入电路

1、方案设计&#xff1a;单通道、单向、反相器 该电路采用单通道&#xff0c;单向光耦&#xff0c;只支持漏型输入&#xff0c;电路的输入端压差满足24V DC10%(21.6V DC-26.4V DC)&#xff0c;输出端电压在0~3.3V范围摆动。 1.1关键技术规格 1.2具体原理图 1.3电路原理详解 …

直接使用ChatGPT的方法

ChatGPT是一个基于人工智能的聊天机器人&#xff0c;它可以与用户进行自然语言交互。ChatGPT使用了最新的自然语言处理技术&#xff0c;包括深度学习和神经网络&#xff0c;以便更好地理解用户的意图和回答用户的问题。 ChatGPT可以回答各种问题&#xff0c;包括但不限于常见问…

高效学习传感器|霍尔式传感器

01、霍尔式传感器的工作原理 1●霍尔效应 霍尔式传感器的物理基础是霍尔效应。如图1所示&#xff0c;在一块长度为l、宽度为b、厚度为d的长方体导电板上&#xff0c;左、右、前、后侧面都安装上电极。在长度方向上通入电流I&#xff0c;在厚度方向施加磁感应强度为B的磁场。 ■…

并发编程13:邮戳锁StampedLock

文章目录 13.1 关于锁的面试题13.2 简单聊聊ReentrantReadWriteLock13.2.1 是什么&#xff1f;13.2.2 特点 13.3 面试题&#xff1a;有没有比读写锁更快的锁&#xff1f;13.4 邮戳锁StampedLock13.4.1 是什么&#xff1f;13.4.2 它是由饥饿问题引出13.4.3 StampedLock的特点13.…

【Linux】IO多路转接-select

文章目录 多路转接IO模型I/O多路转接-selectselect初识select函数select的核心功能fd_set的执行流程select就绪条件基于select的服务器Sock.hppSelect_server.cpp存在的问题 select的优点select的缺点select的适用场景 多路转接IO模型 Linux下多路转接的方案常见的有三种&…

人群归因分数(Population Attributable Fraction, PAF):概念、简单计算案例

专注系列化、高质量的R语言教程 推文索引 | 联系小编 | 付费合集 本篇目录如下&#xff1a; 1 人群归因分数 1.1 相对风险度1.2 人群归因分数2 案例 2.1 示例数据2.2 计算案例12.3 计算案例22.4 计算案例33 总结 1 人群归因分数 人群归因分数&#xff08;Population Attributab…

100G CFP光模块类型应用场景详解

目前&#xff0c;全球电信行业平稳发展&#xff0c;宽带用户稳定增长&#xff0c;随着大数据市场的迅猛发展&#xff0c;骨干网、接入网和数据中心建设均需采购大量的光通信产品&#xff0c;从而给光模块行业带来了全新的市场机遇。如今&#xff0c;100G光模块已成为市场发展的…

最新DNDC模型在土地利用变化、未来气候变化下的建模方法及温室气体时空动态模拟

由于全球变暖、大气中温室气体浓度逐年增加等问题的出现&#xff0c;“双碳”行动特别是碳中和已经在世界范围形成广泛影响。国家领导人在多次重要会议上讲到&#xff0c;要把“双碳”纳入经济社会发展和生态文明建设整体布局。同时&#xff0c;提到要把减污降碳协同增效作为促…

载誉前行!北大青鸟课工场蝉联中国高校计算机教育MOOC联盟会员单位!

近日&#xff0c;北大青鸟旗下的大学生专属品牌课工场喜获殊荣&#xff0c;蝉联中国高校计算机教育MOOC联盟会员单位。这是对北大青鸟课工场一直以来在职业教育领域的卓越表现的肯定&#xff0c;也是对北大青鸟课工场品牌价值的进一步提升。 作为中国高校计算机教育MOOC联盟的会…

JavaScript全解析-面向对象

类语法的书写 ●在 ES6 的语法标准中, 管构造函数不叫做构造函数了, 叫做 类 ●语法: class 类名 {constructor () { // 书写属性 } 书写原型上的方法 方法名 () {} } // ES6 类的语法class Person {// 等价于 ES5 的构造函数体constructor(name) {this.name name}// 直接书写…

Protobuf详解

文章目录 Protobuf是什么传输协议类比 Protobuf协议语法Protobuf类型Protobuf编译器下载配置环境变量 编写一个入门程序 Java是绝大多数人最常用的编程语言&#xff0c;那么作为Java开发如何学习protobuf呢&#xff1f; 步骤如下&#xff1a; 1.下载并安装 Protocol Buffers 工…

Red Hat Enterprise Linux (RHEL) 9.2 (x86_64, aarch64) - 红帽企业 Linux 9.2 发布

Red Hat Enterprise Linux (RHEL) 9.2 (x86_64, aarch64) 红帽企业 Linux 9.2 请访问原文链接&#xff1a;https://sysin.org/blog/rhel-9/&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处。 作者主页&#xff1a;sysin.org 红帽企业 Linux 9 红帽企业 Linux 9.…

把握协作机器人智能、灵活、安全三大矩阵

原创 | 文 BFT机器人 引言 协作机器人是一种能够和人类工作在同一空间的机器人&#xff0c;能够协同完成任务&#xff0c;为制造业和其他领域提供了更高效和灵活的解决方案。 目前&#xff0c;协作机器人市场正在迅速增长&#xff0c;因为越来越多的制造业和其他领域需要自动化…

PCIE使用的有效的命令

查看偏移内容 setpci --dumpregs capabilities查看 pci标准配置头空间 -x pci capbility配置空间 -xxx pcie扩展配置空间-xxxx 红色框框中的第一列对应具体的偏移&#xff0c;第二列对应的是设备的capability id, 第三列对应的是next capability id的偏移。 cap解释 在PCIe规…