git 学习--GitHub Gitee码云 GitLab

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
*.rarhs_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.mzph.cn/bicheng/52216.shtml

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

相关文章

将 hugo 博客搬迁到服务器

1. 说明 在 Ubuntu 22.04 上使用 root 账号,创建普通账号,并赋予 root 权限。 演示站点:https://woniu336.github.io/ 魔改hugo主题: https://github.com/woniu336/hugo-magic 2. 服务器配置 建立 git 用户 adduser git安装 git sudo apt …

python | 图片转换为 pdf 实现方法

目录 一、PIL 库简介及安装使用方法 (一)python 不同版本下 PIL 的使用方法 二、图片转换为 pdf 的两种实现方法 (一)简易版——pdf 页面尺寸跟随图片大小 (二)常用版——pdf 每页尺寸统一为 A4 一、P…

shellcode汇编复习

shellcode汇编复习 一、 汇编代码复习1.1 基础寄存器1. EAX (Accumulator Register)2. EBX (Base Register)3. ECX (Count Register)4. EDX (Data Register)5. ESI (Source Index Register)6. EDI (Destination Index Register) 二、 基础指令1. mov - 数据传送2. add - 加法3.…

Ansys Zemax|如何有效地模拟散射

附件下载 联系工作人员获取附件 概要 OpticStudio中,有两个用来提升散射模拟效率的工具:Scatter To List以及Importance Sampling。在这篇文章中,我们详细讨论了这两个工具,并且以一个杂散光分析为例示范了如何使用Importance S…

简单的jar包重打包Failed to get nested archive for entry 报错处理

简单的jar包重打包Failed to get nested archive for entry 报错处理 1. 需求 公司有一个后端项目,项目已经打好了jar包,现在我们发现jar包依赖的子包有问题,其中的一个mybatis xml文件查询数据不正确,我们需要替换项目&#xf…

批量将labelme的json文件转为png图片查看

文章目录 前提修改 l a b e l m e labelme labelme然后你就可以在这个环境下用代码批量修改了 前提 安装anaconda或者miniconda安装labelme 修改 l a b e l m e labelme labelme 查看labelme所处环境的路径:conda info --envs 比如我的是在py39_torch里面 修改la…

秋招力扣Hot100刷题总结——链表

1. 反转链表题目连接 题目要求:给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。 代码及思路 遍历所有节点,将所有节点的next指向前一个节点由于要改变节点的next指向,而链表是单向的,因此需要…

【Mac】植物大战僵尸杂交版 for Mac(经典策略塔防游戏)游戏介绍

游戏介绍 植物大战僵尸杂交版 for Mac是一款非常受欢迎的策略塔防游戏,植物大战僵尸游戏以其独特的主题、幽默的风格和富有挑战性的关卡设计而著称。玩家需要种植各种植物来防御入侵的僵尸,每种植物都有其特定的功能和攻击方式。植物大战僵尸杂交版&…

Android 上下滑隐藏显示状态栏

一、DisplayPolicy类中监听滑动事件,然后发送广播事件 Android12类路径: frameworks/base/services/core/java/com/android/server/wm/DisplayPolicy.javamSystemGestures new SystemGesturesPointerEventListener(mUiContext, mHandler,new SystemGest…

SQL注入(head、报错、盲注)

目录 【学习目标、重难点知识】 【学习目标】 【重难点知识】 1. 报错注入 1.1 那么什么是报错注入呢? 1.2 报错注入原理 extractvalue函数 updatexml函数 1.3 靶场解析 靶场练习 2. HEAD注入 2.1 相关全局变量 2.2 靶场解析 burp暴力破解 靶场练习 3…

java常见面试题汇总

🌏个人博客主页:意疏-CSDN博客 希望文章能够给到初学的你一些启发~ 如果觉得文章对你有帮助的话,点赞 关注 收藏支持一下笔者吧~ 阅读指南: 开篇说明一、封装 继承 多态1.封装2.继承3.多态 二、什么是重载…

初始化列表 / 隐式转换 / 静态

目录 初始化列表隐式转换单参数的隐式类型转换多参数的隐式类型转换explicit关键字 static 初始化列表 大部分时候成员变量在对象实例化的时候调用构造函数就整体定义了,注意此时只有定义,不算初始化。而定义后的值的值是在构造函数里面给的。我们知道构…

<数据集>无人机航拍不同高度牧羊识别数据集<目标检测>

数据集格式:VOCYOLO格式 图片数量:6065张 标注数量(xml文件个数):6065 标注数量(txt文件个数):6065 标注类别数:1 标注类别名称:[sheep] 序号类别名称图片数框数1sheep6065149785 使用标注工具&…

Macos M1 IDEA本地调试 HBase 2.2.2

# 1. 前提 执行 mvn clean package assembly:single -DskipTests没问题,并在hbase-assembly/target目录下生成hbase-2.2.2-bin.tar.gz 文件夹 证明Maven 下载依赖没问题 1.1 报错 1 这里应该是报错找不到 com.google.protobuf:protoc:exe:osx-aarch_64:3.5.1 …

入门STM32—外部中断

外部中断的存在使得微控制器能够及时响应外部事件,避免频繁的轮询操作,从而提高系统的实时性、效率和低功耗性能。 1.什么是外部中断? 外部中断是指微控制器接收到外部引脚的信号变化时触发的中断。STM32F103系列微控制器支持多个外部中断线…

鸿蒙(API 12 Beta3版)【DRM会话管理(C/C++)】数字版权保护开发

DRM会话管理(MediaKeySession)支持媒体密钥管理及媒体解密等,MediaKeySession实例由系统管理里的MediaKeySystem实例创建和销毁。 开发步骤 导入NDK接口,接口中提供了DRM相关的属性和方法,导入方法如下。 #include &…

学习嵌入式第二十九天

ipc进程间通信方式 PC,即进程间通信(Inter-Process Communication),是操作系统中不同进程之间交换数据的一种机制。以下是一些常见的IPC方式: 管道:用于父子进程或兄弟进程之间的通信。消息队列&#xff…

selenium-java实现自动登录跳转页面

如果要一直刷新一个网页,总不能人工一直去点,所以想到大学时候学过selenium技术,写个脚本来一直刷新,因为经常写java语言,所以选用java语言来写 实验环境 注意,需要先准备好Google浏览器和Chrome-Driver驱…

ffmpeg6.1集成Plus-OpenGL-Patch滤镜

可参考上一篇文章。ffmpeg6.1集成ffmpeg-gl-transition滤镜-CSDN博客 安装思路大致相同, 因为 Plus-OpenGL-Patch也是基于 ffmpeg 4.x 进行开发的,所以在高版本上安装会有很多报错。 这是我安装后的示例,需要安装教程或者改代码可私信我。 …

记录一次 Redis 优化发送数据(使用管道批量传送)

一 项目背景 此前的项目中,鉴于客户方服务器的安全配置对 MQ 中间件有所限制,我们只得采用 Redis 的 list 作为简易的 MQ 来传送报文数据。然而,近段时间客户关闭了相关端口,导致大量数据积压,需要进行补发。在补发过程…