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

news/2024/5/17 19:45:52 标签: git, 码云, gitee, 前端

目录

  • 版本控制
  • 安装
  • 配置
  • 理论部分
  • 项目创建及克隆
    • 创建全新仓库
    • 克隆远程仓库
  • 文件操作
    • 理论
    • 实操
  • 使用码云
  • 分支与冲突
    • 实操说明
  • 遇到的问题
    • 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上是可以集成开发的,只需要配置gitgit.exe地址即可。

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

vscode克隆慢的问题

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

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

后记

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


http://www.niftyadmin.cn/n/313830.html

相关文章

portraiture插件下载安装PS磨皮滤镜插件

coco玛奇朵是讲磨皮插件的安装和使用方法,用的PS版本是PS2023版,不用你学很复杂的高低频磨皮美白祛痘技术,也不需要懂什么是ps磨皮中性灰,也不用各种骚操作,只需要一键就能磨皮。对于摄影爱好者来说,他真的…

自定义映射resultMap

文章目录 一、resultMap处理字段和属性的映射关系二、多对一映射处理1.级联的方式2.使用association处理映射关系 三、分步查询 一、resultMap处理字段和属性的映射关系 若字段名和实体类中的属性名不一致,则可以通过resultMap设置自定义映射 resultMap中的标签 re…

算法训练Day53:​ 1143.最长公共子序列 1035.不相交的线 53.最大子序和 动态规划

文章目录 最长公共子序列题解 不相交的线题解 最大子数组和题解 最长公共子序列 CategoryDifficultyLikesDislikesContestSlugProblemIndexScorealgorithmsMedium (64.94%)13110--0 Tags Companies 给定两个字符串 text1 和 text2,返回这两个字符串的最长 公共子…

开源轻量级 IM 框架 MobileIMSDK 的Uniapp客户端库已发布

一、基本介绍 MobileIMSDK-Uniapp端是一套基于Uniapp跨端框架的即时通讯库: 1)超轻量级、无任何第3方库依赖(开箱即用);2)纯JS编写、ES6语法、高度提炼,简单易用;3)基于…

企业电子招投标采购系统源码之登录页面-java spring cloud

​ 信息数智化招采系统 服务框架:Spring Cloud、Spring Boot2、Mybatis、OAuth2、Security 前端架构:VUE、Uniapp、Layui、Bootstrap、H5、CSS3 涉及技术:Eureka、Config、Zuul、OAuth2、Security、OSS、Turbine、Zipkin、Feign、Monitor、…

promise future承认给你美好的未来?

C11提供了异步操作相关的类&#xff0c;主要有std::future,std::promise和std::package_task. 1.获取线程函数返回值的类std::future future有三种状态: Defered,异步操作还没有开始 Ready,异步操作已经完成 Timeout&#xff0c;异步操作超时 #include <io…

如何带领5人小团队开发软件

作为一个项目经理&#xff0c;你可能经常面临着如何带领一个小团队高效地开发软件的挑战。在这篇博客中&#xff0c;我将分享一些我的经验和技巧&#xff0c;希望对你有所帮助。 如何明确项目目标和范围&#xff0c;以及团队成员的角色和职责 在开始一个软件开发项目之前&…

门控循环单元详细介绍

门控循环单元&#xff08;Gated Recurrent Unit&#xff0c;GRU&#xff09;是一种常用于自然语言处理和序列数据处理中的神经网络模型&#xff0c;在循环神经网络&#xff08;Recurrent Neural Network&#xff0c;RNN&#xff09;中被广泛运用。GRU与长短期记忆网络&#xff…