git 学习--GitHub Gitee码云 GitLab

news2024/11/15 21:54:31

1 集中式和分布式的区别

1.1 集中式

集中式VCS必须有一台电脑作为服务器,每台电脑都把代码提交到服务器上,再从服务器下载代码。如果网络出现问题或服务器宕机,系统就不能使用了。

在这里插入图片描述

1.2 分布式

分布式VCS没有中央服务器,每台电脑都可以保存代码版本,没有网络的时候可以先提交到本地,每台电脑也都可以作为服务器,其他电脑可以从作为服务器的电脑上克隆代码,可见分布式系统比集中式系统的安全性高很多。

2 GIT的工作流程

在这里插入图片描述
代码保存位置分为:

  • Remote 远程仓库,在网络中保存代码的位置
  • Repository 本地仓库,在本机上保存代码
  • Index 暂存区,在本机上临时保存代码的位置
  • Workspace 工作区,开发代码的位置
1、git clone 克隆远程资源到本地目录,git checkout作为工作目录;

2、然后在本地的克隆目录上添加或修改文件;

3、如果远程修改了,需要同步远程的内容,直接git pull就可以更新本地的文件;

4、本地在修改之后,可以通过git status 查看修改的文件。然后使用git add 添加修改的文件到缓冲区(暂存区);

5、在添加之后,可以使用git commit添加到当前的工作区;

6、在修改完成后,如果发现错误,可以撤回提交并再次修改并提交;

7、git push将本地的修改推送到远程的git服务器。

3 Git安装

在Windows上使用Git,可以从Git官网直接下载安装程序,(网速慢的同学请移步国内镜像),然后按默认选项安装即可。

注意 安装目录不要有中文

4 Git常用命令

命令名称作用
git config --global user.name 用户名设置用户签名
git config --global user.email 邮箱设置用户签名-
git init初始化本地库
git status查看本地库状态
git add 文件名添加到暂存区
git commit -m "日志信息” 文件名提交到本地库
git reflog查看历史记录
git reset --hard 版本号版本回退
git remote -v查看当前配置的远程仓库地址
git remote remove origin移除当前的远程仓库
git remote add origin(别名) 新的仓库地址添加新的远程仓库地址
git remote -v验证新的远程仓库地址是否生效
git reset --soft HEAD~1删除最后一个提交,但保留更改内容(交互式变基):
git reset --hard HEAD~1删除最后一个提交,并且也删除更改内容(硬重置)

4.1 设置用户签名

4.1.1 基本用法

git config --global user.name 用户名
git config --global user.email 邮箱

4.1.2 说明 :

签名的作用是区分不同操作者身份。用户的签名信息在每一个版本的提交信息中能够看到,以此确认本次提交是谁做的。Git首次安装必须设置一下用户签名,否则无法提交代码。

※注意 : 这里设置用户签名和将来登录GitHub (或其他代码托管中心)的账号没有任何关系。-

4.1.3 以文件查看自己设置的签名

安装之后桌面右击,选择Git Bash Here
在这里插入图片描述
注意上面@前面部分,找到对应文件,如下图,找到.gitconfig文件,里面就有name和email—没找到是因为该文件属于隐藏文件,打开即可
在这里插入图片描述
在这里插入图片描述

4.1.4 以代码形式查看自己设置的签名

在这里插入图片描述

4.2 初始化本地库

4.2.1 基本语法

git init 
在**该项目文件里面**使用这个命令是为了让该项目可以git管理

4.3 查看文件当前状态

4.3.1 基本语法

git status

4.4 添加暂存区

4.4.1 基本语法

git add 文件名

4.4 .2 使用方法

建立Gittt 文件,右击选择Git Bash Here 运行 git init得到.git文件

在这里插入图片描述
输入命令 vim hello.txt(文件名),随便属于几行 点击键盘 “I” 即可打字
在这里插入图片描述
输入完毕按 esc 键 输入wq 回车即可 跟Linux一样

执行以下命令就可以添加到暂存区
在这里插入图片描述
删除暂存区

git rm --cached hello.txt

4.5 提交本地库

4.5.1 基本语法

git commit -m "日志信息" 文件名

4.5.2 使用方法

在这里插入图片描述

4.6 Git时光机

4.6.1 查看提交记录

$ git reflog 简略
$ git log	详细

4.6.2 版本回退

$ git reset --hard HEAD^
$ git reset --hard 版本号

首先,Git必须知道当前版本是哪个版本,在Git中,用HEAD表示当前版本,上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100

4.7 修改文件

修改hello.txt (代码为vim hello.txt)如下,保存退出
在这里插入图片描述
查看状态
在这里插入图片描述
提交暂存区,并看日志
在这里插入图片描述

4.8 版本回退

4.8.1 基本语法

$ git reset --hard HEAD^
$ git reset --hard 版本号

首先,Git必须知道当前版本是哪个版本,在Git中,用HEAD表示当前版本,上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100

4.8.2 使用方法,回退上一个版本

在这里插入图片描述

4.9 分支

4.9.1 概述

分支相当于副本,一个分支就是一个单独的副本,分支的底层就是指针的引用。
在开发中,一个分支给用户使用,一个分支给程序员开发。

4.9.2 分支的好处

同时并行推进多个功能开发,提高开发效率。
各个分支在开发过程中,如果某一个分支开发失败,不会对其他分支有任何影响。失败的分支删除重新开始即可。

4.9.3 分支的操作

命令名称作用
git branch 分支名创建分支
git branch -v查看分支
git checkout 分支名切换分支
git merge 分支名把指定的分支合并到当前分支上

4.9.4 使用方式

创建并查看分支,切换分支
在这里插入图片描述
在新创建的分支下修改文件,并提交
在这里插入图片描述
在这里插入图片描述
切换master分支,发现hello.txt 没有和one分支添加的内容合并
在这里插入图片描述进行合并,发现one分支添加的内容出现在了master分支里面
在这里插入图片描述

4.9.5 冲突合并

合并分支时,两个分支在同一个文件的同一个位置有两套完全不同的修改。Git无法替我们决定使用哪一个。必须人为决定新代码内容。
解决办法就是合并之后,分支后面会有 master|MERGING 标识,手动打开文件进行删留,解决好之后提交就阔以了

4.10 远程仓库

4.10.1 添加远程仓库

$ git remote add origin 远程仓库地址

4.10.2 从远程仓库克隆

$ git clone 远程仓库地址

4.10.3从远程仓库同步最新代码

$ git pull

4.10.4 将代码推送到远程仓库

$ git push

5 Github操作

地址:https://github.com/

5.1 创建远程库

注册之后,如下操作
在这里插入图片描述

5.2 远程仓库操作

命令名称作用
git remote -v查看当前所有远程地址别名
git remote add 别名 远程地址起别名
git push 别名 分支推送本地分支上的内容到远程仓库
git clone 远程地址将远程仓库的内容克隆到本地-
git pull 远程库地址别名 远程分支名将远程仓库对于分支最新内容拉下来后与-当前本地分支直接合并-
git remote remove 别名删除别名

5.2.1 创建远程仓库别名

创建库之后界面可知远程地址
在这里插入图片描述
创建别名并查看
在这里插入图片描述

5.2.2 推送本地分支到远程仓库

git config --global --unset credential.helper

git-credential-manager configure
在这里插入图片描述

在这里插入图片描述

5.2.3 远程库拉到本地库

在这里插入图片描述
拉取到本地库之后,可用cat hello.txt 查看文件

在这里插入图片描述

5.2.4 克隆远程仓库到本地

视频:
https://www.bilibili.com/video/BV1vy4y1s7k6?p=25&spm_id_from=pageDriver&vd_source=88f817b9699e2f062d505d6a4f50dd00
在这里插入图片描述
在这里插入图片描述

5.2.5 ssh免密登录

需要添加key
在这里插入图片描述
开始获取key
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
复制公钥
在这里插入图片描述
在这里插入图片描述
表示添加成功,使用的时候就是把创库地址前面的 http 改为git
作用就是省去了push 登录环节
在这里插入图片描述

6 idea配合Git

6.1 配置GIT

1、 File -> Settings -> Version Control -> Git 配置Git的目录

6.1.1 配置Git忽略文件

与项目的实际功能无关,不参与服务器上部署运行。把它们忽略掉能够屏蔽IDE工具之间的差异。
在这里插入图片描述
在这里插入图片描述
文件里面输入

# Compiled class file
*.class

# Log file
*.log

# BlueJ files
*.ctxt

# Mobile Tools for Java (J2ME)
.mtj.tmp/# Package Files #
*.jar
*.war
*.nar
*.ear
*.zip
*.tar.gz
*.rar

hs_err_pid*

.classpath
.project
.settings
target
.idea
*.iml

.gitconfig引用这个文件
在这里插入图片描述

6.2 初始化本地库

他会自己选择本项目,点击欧克即可
在这里插入图片描述
在这里插入图片描述
这时候项目文件会出现不同的颜色

  • 红色 没有加入到git暂存区

  • 绿色 加入暂存区,没有提交

  • 蓝色 做了修改,没有提交

  • 白色 完成提交,是最新的

6.3 添加暂存区并提交

将pom文件加入暂存区,未提交
在这里插入图片描述
将整个项目提交到暂存区,并写了一个类
在这里插入图片描述
在这里插入图片描述
可写可不写,然后点击提交(commit)
在这里插入图片描述

6.4 切换版本

修改了,左边git_text 类变蓝了
在这里插入图片描述
加入暂存区,提交本地库
在这里插入图片描述

6.4.1 查看版本信息

有黄色( head )和绿色(分支)图标(指针)
在这里插入图片描述

6.4.2 切换版本

在这里插入图片描述
在这里插入图片描述

6.5 创建分支&切换

也可以点右下角有个master,里面也可创建(切换分支也是这,点击checkout就是切换)
在这里插入图片描述

6.6 合并分支

6.6.1 正常合并,无冲突

在这里插入图片描述
提交,切换到master分支
在这里插入图片描述
点击master,选择onebranch,点击merge— 进行合并
在这里插入图片描述
在这里插入图片描述

6.6.2 冲突合并

进入onebranch分支修改,提交
在这里插入图片描述
进入master分支修改,提交
在这里插入图片描述
都提交之后
在这里插入图片描述
在master分支上合并
在这里插入图片描述
原因暂存区加入了这个,原因就是前面忽略文件没做,解决办法就是重新开始
在这里插入图片描述
重新创建项目之后
在这里插入图片描述
合并之后,一个是master分支,一个是onebranch分支
在这里插入图片描述

6.7 设置GitHub账号

在这里插入图片描述

在这里插入图片描述
登录GitHub点击setting 找到Developer settings
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

6.8 分享项目到GitHub

第一种
在这里插入图片描述
第二种
在这里插入图片描述
成功之后在GitHub官网刷新就可以看见
在这里插入图片描述

6.9 push推送本地库到远程库

在这里插入图片描述

https 推送

这种上转直接点击git->push
由于要考虑网速,所以用ssh

ssh 推送

在这里插入图片描述

在这里插入图片描述
把ssh地址放入url中
在这里插入图片描述
在这里插入图片描述
注意: push是将本地库代码推送到远程库,如果本地库代码跟远程库代码版本不一致,push 的操作是会被拒绝的。也就是说,要想push成功,一定要保证本地库的版本要比远程库的版本高!因此一个成熟的程序员在动手改本地代码之前,一定会先检查下远程库跟本地代码的区别!如果本地的代码版本已经落后,切记要先pull 拉取一下远程库的代码,将本地代码更新到最新以后,然后再修改,提交,推送!e

6.10 拉取远程库代码合并本地库

在GitHub网站中加入一行
在这里插入图片描述
idea中pull
在这里插入图片描述

6.11 clone克隆远程库到本地

需要删除本地项目,克隆是无到有
在这里插入图片描述
做完这些点击clone
在这里插入图片描述

6.12 gitee码云-账号注册登录&创建远程库

和github一样

6.13 idea集成码云

没有下载一个,操作跟github一样
在这里插入图片描述

6.14 导入gihub

在这里插入图片描述

6 GitLab

学习视频
https://www.bilibili.com/video/BV1vy4y1s7k6/?p=41&vd_source=13cb4355a2724100e26f8fedb59caaa8
gitlab网站:(也有安装教程)
https://gitlab.cn/install/

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

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

相关文章

基于Java+SpringBoot+Vue的体育馆管理系统的设计与实现

基于JavaSpringBootVue的体育馆管理系统的设计与实现 前言 ✌全网粉丝20W,csdn特邀作者、博客专家、CSDN[新星计划]导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取项目下载方式&…

JavaScript初级——基础知识

一、JS的HelloWord 1、JS的代码需要编写到script标签中 2、JS的执行是根据语句从上到下一次执行的。 二、JS的编写位置 1、可以将js代码编写到标签的onclick属性中,当我们点击按钮时,js代码才会执行。 2、可以将js代码写在超链接的href属性中&#xff0…

fastzdp_sqlmodel新增get_first和is_exitsts方法

说明 经过fastzdp_login的整合,我们发现,fastzdp_sqlmodel还可以继续封装两个便捷的方法。 get_first:获取查询结果集中的第一条数据is_exitsts:判断数据是否已存在 封装get_first方法 def get_first(engine, model, query_di…

优化算法|牛顿-拉夫逊优化算法(NRBO)详解

算法介绍 本篇推文将介绍一种新的智能优化算法,牛顿-拉夫逊优化算法(Newton-Raphson-based optimizer, NBRO),该成果由学者Sowmya等人于2024年2月发表于期刊《Engineering Applications of Artificial Intelligence》。文末提供了原文作者的完整代码git…

【python爬虫】邮政包裹物流查询2瑞数6加密

大家好呀,我是你们的好兄弟【星云牛马】,今天给大家带来的是瑞数6的补环境的总结,补环境肯定是需要一些基础补环境知识的,所以建议没有基础的小伙伴可以加入学习群进行学习,有基础的伙伴加入交流起来。 QQ群&#xff…

《向量数据库指南》——AI应用部署落地与权限安全差别

部署落地与权限安全差别 RAG部署有许多系统化优化点 RAG分化程度非常高,因为RAG是许多东西的组成,类似大数据生态,里边有非常多的环节,从数据抓取、数据清洗、数据挖掘,然后预处理,再经过模型分析,比如说embedding模型生成向量,然后再做数据的持久化,serving stack,就…

打卡学习Python爬虫第二天|数据解析Re 正则表达式

在前面的学习中,我们已经基本掌握了抓取整个网页的基本技能,但是在实际的需求当中,我们不需要整个网页的内容,只需要一小部分。这就涉及到数据提取的问题。 三种数据解析的方式:可混合使用 1、re解析 2、bs4解析 3…

无人机低成本集群技术实现详解

在现代科技的迅猛发展中,无人机技术已广泛应用于军事侦察、环境监测、农业植保、物流配送等多个领域。其中,无人机集群技术作为提高任务效率、降低成本的重要手段,正受到越来越多的关注。本项目旨在研发一套低成本无人机集群系统,…

<C语言>指针的深度学习

目录 一、字符指针 二、指针数组 三、数组指针 1.数组指针的定义 2.&数组名与数组名 3.数组指针的使用 四、数组参数、指针参数 1.一维数组传参 2.二维数组传参 3.一级指针传参 4.二级指针传参 五、函数指针 六、函数指针数组 七、指向函数指针数组的指针 八、回调函数 1…

微信云开发云存储全部下载

一、安装 首先按照这个按照好依赖 安装 | 云开发 CloudBase - 一站式后端云服务 npm i -g cloudbase/cli 二、登录 tcb login 下载 首先在你要下载到的本地文件内创建一个名为:cloudbaserc.json 的json文件。 填入你的id {"envId":"你的云开发环…

STM32基础篇:定时器 × 时基单元

定时器简介 定时器是一种专门负责定时功能的片上外设。F1系列的单片机最多有14个定时器(TIM1~TIM14),具体如下表: 类型外设名称基本定时器TIM6和TIM7通用定时器TIM2~TIM5和TIM9~TIM14高级定时器TIM1和TIM8 基本定时器是功能最简…

Chrome浏览器无法打开无痕模式的解决方案

1.在设置---关于Chrome里面进行升级,升级到最新版本 2.windowsR打开运行输入regedit打开注册表 3、在HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Google\Chrome下面找到IncognitoModeAvailability将值修改为0,重新打开浏览器即可打开无痕模式

【SpringBoot】SpringBoot 中 Bean 管理和拦截器的使用

目录 1.Bean管理 1.1 自定义Bean对象 1.2 Bean的作用域和生命周期 2.拦截器的使用 1.Bean管理 默认情况下,Spring项目启动时,会把我们常用的Bean都创建好放在IOC容器中,但是有时候我们自定义的类需要手动配置bean,这里主要介绍…

掌握这三种方法,让你快速获取商品信息,数据采集不再难

摘要: 面对琳琅满目的天猫商品,如何迅速精准地获取所需信息成为电商竞争的关键。本文揭秘三种实战技巧,助你在数据采集路上快人一步,让繁琐的数据收集变得轻而易举。 一、如何在信息海洋中,快速捞取天猫商品的“珍宝…

wifi密码字典之8位纯数字

最近研究网络安全,对无线网络进行渗透测试,用了kali linux和ubuntu linux,比较了几个抓包与分析工具,最终选择了aircrack-ng,同样的流程用已知的wifi密码测试通过,对网络安全渗透测试要用到密码字典&#x…

midwayjs 无法启动 无任何日志和报错

比如我的mqtt,原本是直接 imports:[mqtt],但无法启动 无任何日志和报错 解决直接 this.app.addConfigObject(mqtt) addConfigObject作用:将 MQTT 配置添加到应用的配置中。addConfigObject 方法允许你在应用初始化完成后动态地添加或更新应…

Ubuntu 添加 GitLab 官方仓库报错“curl is unable to connect to packagecloud.io over TLS”

Ubuntu 安装 Gitlab 报错“curl is unable to connect to packagecloud.io over TLS” 1 现象2 问题排查3 解决方案4 验证 1 现象 Ubuntu 上添加 GitLab 官方仓库时报错“……curl is unable to connect to packagecloud.io over TLS……” 2 问题排查 终端提示中给出两种可…

复现nnUNet2并跑通自定义数据

复现nnUNet2并跑通自定义数据 1. 配置环境2. 处理数据集2.1 创建文件夹2.2 数据集格式转换2.3 数据集预处理 3. 训练 1. 配置环境 stage1:创建python环境,这里建议python3.10 conda create --n nnunet python3.10 conda activate nnunet stage2&#x…

Kotlin 流flow、ShareFlow、StateFlow、Channel的解释与使用

一、介绍 随着Android接入kotlin开发,Android之前好多模式也渐渐被kotlin替代。开发模式也在做渐进的转型,从MVC到MVP在到MVVP以及现在的MVI等。 流IO在java中和kotlin中使用率都是比较高的,场景很多。如Java的IO和NIO,再到我们现…

使用fastzdp_sqlmodel改造fastzdp_login中关于用户注册和用户登录的接口

原本的代码 user_router.post("/register/", summary"用户注册") def register_user(username: str Body(str, min_length2, max_length36),password: str Body(str, min_length6, max_length128),db: SASession Depends(get_db), ):# 检查用户名是否已…