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
*.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.mfbz.cn/a/871689.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Python编码系列—Python SQL与NoSQL数据库交互:深入探索与实战应用

🌟🌟 欢迎来到我的技术小筑,一个专为技术探索者打造的交流空间。在这里,我们不仅分享代码的智慧,还探讨技术的深度与广度。无论您是资深开发者还是技术新手,这里都有一片属于您的天空。让我们在知识的海洋中…

预警先行,弯道哨兵让行车更安全

预警先行,弯道哨兵让行车更安全”这句话深刻体现了现代交通安全理念中预防为主、科技赋能的重要性。在道路交通中,尤其是复杂多变的弯道区域,交通事故的发生率往往较高,因此,采取有效的预警措施和引入先进的交通辅助设…

怎么管控终端电脑上的移动端口

管控终端电脑上的移动端口,尤其是USB等移动端口,是确保企业数据安全和提升网络管理效率的重要手段。 一、使用注册表编辑器禁用USB端口(适用于Windows系统) 打开注册表编辑器: 同时按下“WinR”组合键,打…

SEO优化:如何优化自己的文章,解决搜索引擎不收录的问题

可以使用bing的URL检查,来检查自己的文章是不是负荷收录准测,如果页面有严重的错误,搜索引擎是不会进行收录的,而且还会判定文章为低质量文章! 检查是否有问题。下面的页面就是有问题,当然如果是误报你也可…

Java并发类API——CompletionService

CompletionService 是 Java 中 java.util.concurrent 包的一部分,用于管理并发任务的执行,并以完成的顺序提供结果。它结合了线程池和阻塞队列的功能,用于提交任务并按照任务完成的顺序来检索结果,而不是按照任务提交的顺序。 接…

NC拼接所有的字符串产生字典序最小的字符串

系列文章目录 文章目录 系列文章目录前言 前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码吧。 描述 给定一个长度…

单例模式(singleton)- python实现

通俗示例 想象一下,一个国家只有一个国王。不管你在哪里,提到这个国家的国王,大家都能知道是指同一个人。在程序设计中,单例模式就像是这样的国王,一个类只有一个实例,无论你多少次请求这个类的实例&#…

基于Hadoop的汽车大数据分析系统设计与实现【爬虫、数据预处理、MapReduce、echarts、Flask】

文章目录 有需要本项目的代码或文档以及全部资源,或者部署调试可以私信博主项目介绍爬虫数据概览HIve表设计Cars Database Tables1. cars_data2. annual_sales_volume3. brand_sales_volume4. city_sales_volume5. sales_volume_by_year_and_brand6. sales_distribu…

Midjourney进阶-反推与优化提示词(案例实操)

​ Midjourney中提示词是关键,掌握提示词的技巧直接决定了生成作品的质量。 当你看到一张不错的图片,想要让Midjourney生成类似的图片,却不知道如何描述画面撰写提示词,这时候Midjourney的/describe指令,正是帮助你推…

嵌入式AI快速入门课程-K510篇 (第四篇 AI概念及理论知识)

第四篇 AI概念及理论知识 文章目录 第四篇 AI概念及理论知识1.人工智能与机器学习1.1 机器学习1.2 模型和拟合1.3 线性回归模型1.3.1 实现简单线性回归1.3.2 简单线性回归代码解析1.3.3 Sklearn实现房价预测模型1.3.4 Sklearn房价预测代码解析 2.深度学习及神经网络2.1 深度学习…

Java | Leetcode Java题解之第355题设计推特

题目&#xff1a; 题解&#xff1a; class Twitter {private class Node {// 哈希表存储关注人的 IdSet<Integer> followee;// 用链表存储 tweetIdLinkedList<Integer> tweet;Node() {followee new HashSet<Integer>();tweet new LinkedList<Integer&g…

多线程并发服务器

多线程并发服务器 服务端 #include <stdio.h> #include <string.h> #include <sys/errno.h> #include <sys/socket.h> #include <arpa/inet.h> #include <unistd.h> #include <stdlib.h> #include <ctype.h> #include <p…

Nofollow不好吗?Follow和Nofollow的区别

Follow和Nofollow的区别 “follow”和“nofollow”是HTML中的两种属性&#xff0c;它们通常用于<a>标签&#xff0c;即超链接。这两种属性对搜索引擎优化&#xff08;SEO&#xff09;有重要的影响。 1.Follow链接&#xff08;Dofollow&#xff09;: 这是默认的链接属性…

带你玩转小程序推广,实现短链接一键跳转

不知道各位有没有想过&#xff0c;短链接直接跳转到微信小程序到底该怎么操作呢&#xff1f;掌握这个小技能&#xff0c;能让你的推广效率大幅提升哦。今天就给大家分享一个全新方法&#xff0c;教你如何从短链接直接跳转到微信小程序&#xff0c;实现高效的一键式跨越。 一、…

如何开发出一款优秀的软件

一段时间以来&#xff0c;笔者都想写一篇关于如何开发一款优秀软件的文章&#xff0c;关于软件的质量&#xff0c;笔者一直很有想法&#xff0c;自2014年从一家很优秀的软件公司出来后&#xff0c;笔者发现很多软件都存在这样&#xff0c;那样的问题&#xff0c;最终相关企业也…

docker连接宿主机redis,提示Connection refused

目录 一、测试环境 二、问题现象 三、问题总结 一、测试环境 centos 7 redis-5.0.14 docker-26.0.1 二、问题现象 服务器重启后docker连接宿主机redis&#xff0c;提示Connection refused Reconnecting, last destination was /172.25.xxx.x:6379 …

[CTF]-Reverse:纯逻辑分析题型综合解析

C语言&#xff1a; 字符串爆破&#xff1a; 例题&#xff08;BUUCTF SimpleRev&#xff09;&#xff1a; 查壳 看ida 这里的中心就是两个字符串和一个计算式子&#xff0c;textkillshadow和str2adsfkndcls&#xff0c;计算式子str2[v2] (v1 - 39 - key[v3 % v5] 97) % 26 …

汽车的UDS诊断02

UDS的不同服务: 1)物理寻址和功能寻址 can总线上往往有多个ECU,诊断设备可以和某个ECU通信,也可以和多个ECU通信,通过物理寻址和功能寻址来解决这个问题,只针对请求报文: 物理寻址:就是诊断仪与ECU之间点对点通信 功能寻址:就是诊断仪与多个ECU之间一对多信 我们的…

Github 2024-08-22 Go开源项目日报 Top10

根据Github Trendings的统计,今日(2024-08-22统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Go项目10TypeScript项目1精选Go框架、库和软件列表 创建周期:3700 天开发语言:Go协议类型:MIT LicenseStar数量:127377 个Fork数量:11751 …

【备忘录模式】设计模式系列:掌握状态回溯的艺术(设计详解)

文章目录 备忘录设计模式详解引言1. 设计模式概述2. 备忘录模式的基本概念2.1 备忘录模式的定义2.2 备忘录模式的关键角色 3. 备忘录模式的实现原理3.1 备忘录模式的工作流程3.2 模式的优缺点分析3.3 与其他模式的对比 4. 实际案例分析4.1 游戏状态保存与恢复4.2 文档编辑器撤销…