Git复习,GitHub\Gitee的使用,IDEA集成Git

news/2024/11/16 22:51:12/

今天想把自己的课设上传到GitHub,因为长久不用,Git的命令忘得差不多了,所以今天把Git重新学一遍。

文章目录

    • Git的介绍
    • Git的安装
    • Git的常用命令
      • 工作机制
      • 常用命令
        • 用户签名
      • 初始化本地库
      • 查看本地库状态
      • 添加暂存区
      • 提交本地库
      • 查看引用日志信息
      • 修改文件
      • 版本切换
      • 其他命令
    • 分支操作
      • 创建分支
      • 切换分支
      • 分支合并
      • 冲突合并
    • 团队协作
      • 团队内协作机制
      • 跨团队协作
    • GitHub的使用
      • 创建远程库
      • 连接远程库
      • 推送到远程库
      • 从远程库拉取到本地库
      • 从远程库克隆到本地库
      • 团队内操作
      • 跨团队协作
      • SSH免密登陆
        • 创建公钥
    • IDEA集成Git
      • 忽略文件
      • IDEA中集成本地Git
      • IDEA中使用Git
      • 版本切换
      • IDEA分支管理
      • 分支合并
      • 分支冲突
    • IDEA集成GitHub
      • 设置GitHub账号
      • IDEA推送到远程库
      • 从GitHub拉取远程库
      • 从远程库克隆到IDEA中
    • Gitee的使用
      • 从GitHub迁移项目到Gitee
    • GitLab
      • 安装GitLab
        • 服务器准备
      • IDEA中使用GitLab

Git的介绍

Git一个分布式版本控制工具,能够管理不同版本的项目。

我们在开发中的项目,需要不断地迭代,每次迭代都可以称作一个版本,每个版本的内容也是不一样的,这么多版本的项目,你管理起来会非常麻烦,而且版本回退,协作开发更麻烦,于是版本控制工具就出现了。

版本控制就是可以记录文件修改历史记录,从而让用户能够查看历史版本,方便版本切换。

在团队开发中,版本控制就尤为重要

Git的安装

Git官网下载安装包,无脑下一步即可

Git的常用命令

工作机制

image-20221226230455727

常用命令

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

用户签名

利用命令

git config --global user.name
git config --global user.email

设置用户名和邮箱

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

注意:这里设置的用户名和邮箱的真实性不用考虑,只是起标识作用

初始化本地库

git init

选择一个目录,在此目录右键"git bash",然后输入命令即可

image-20221227205243700

image-20221227205136225

查看本地库状态

git status

vim

Git和Linux的命令是通用的,可以写

image-20221227210006829

添加暂存区

将工作区的文件添加到暂存区

git add 文件名

image-20221227210243762

此时再次利用git status命令查看本地库状态

image-20221227210529340

如果想要清空暂存区的内容,可以使用命令

git rm --cache 文件名

image-20221227210738829

提交本地库

文件添加到暂存区之后,并未形成历史版本,需要提交到本地库后才能形成历史版本

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

提交的是暂存区的文件,如果文件没有添加到暂存区是不能够提交的的哦

image-20221227211517816

此时再查看本地库状态

image-20221227211547807

查看引用日志信息

git reflog

image-20221227211806058

还可以通过

git log 

命令查看更加详细的日志,不仅可以查看提交的版本,还可以查看提交的签名,还能看到完整版的版本号

image-20221227211951218

修改文件

模拟企业中的版本修改

修改文件后,再次查看本地库状态

image-20221228002217996

再次使用git add 和 git commit 提交即可

image-20221228002517432

在Git中是按照行来维护文件的

此时再查看本地库状态,会看到有两个版本git reflog

image-20221228002642399

image-20221228002722783

此时查看就会是第二个版本的内容

image-20221228002755015

在文件管理\本地库 中永远只会显示一个文件

image-20221228003050951

底层是用指针控制的

版本切换

查看本地库中的文件的版本,有两个命令,前面刚才演示过了

git reflog   查看精简版的信息
git log		查看详细的版本信息【时间、提交者、邮箱】

那么如何切换某个文件的多个版本

只需要使用上述两个命令查看具体的版本号,利用下面命令

git reset --hard 版本号

image-20221228003806100

此时查看版本号,看到指针指向第二个版本号

image-20221228004025483

查看文件内容

image-20221228003841361

此外,还可以打开本地库中的.git文件夹中的HEAD文件,会看到

image-20221228004146863

表示当前已经处于master分支上,如何查看该分支上的某个具体的版本呢?

需要打开.git文件夹中的refs文件夹,继续打开heads文件夹,打开master文件夹,会看到里面具体的文件版本号

image-20221228004422273

其他命令

在Git的安装目录下的\mingw64\share\doc\git-doc目录下,有Git所有命令的说明手册,一个命令做成了一个网页,可以根据命令来查看文档。

image-20221229193856494

也可以在git bash 中,利用--help的命令来查看帮助文档,比如说git add这个命令我不懂,那么就可以在命令框中这样写

git add --help

就可以查看命令的详细文档

分支操作

在版本控制的过程中,同时推进多个任务,为每个任务,我们就可以创建每个任务单独的分支。

使用分支意味着,程序员可以把自己的工作从开发主线上分离开来,开发自己分支的时候,不会影响主线分支的运行。(分支的底层也是指针的运用)

分支的好处

同时并行推进多个功能开发,提高开发效率

各个分支在开发过程中,如果某一个分支开发失败,不会对其他分支有任何影响,失败的分支删除重新开始即可

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

image-20221228194541229

创建分支

git branch 分支名

image-20221228194739559

切换分支

image-20221228195103474

image-20221228195357648

此时查看文件就是此分支修改后的文件,

打开.git的HEAD文件,指向切换后的分支

image-20221228195513446

同时在.git文件夹下的refs文件夹中的heads文件夹中就会有新的分支的文件,打开后就是当前分支所处的版本号

image-20221228195708709

分支合并

git merge 分支名

把当前的其他分支合并到当前分支上

image-20221228200126872

冲突合并

何时会产生冲突?

两个分支在同一个文件的同一个位置有两套完全不同的修改,Git无法决定使用哪一个,此时需要手动解决。

image-20221228201304484

此时就需要手动解决,打开发生冲突的文件

image-20221228201442436

将想要保存的内容留下,其余的删除即可

修改完成之后,仍需要来一波git add 和 git commit

git add 文件名
git commit

**注意:**此时的git commit 不能带文件名,

image-20221228201927570

团队协作

团队内协作机制

image-20221228203346974

clone 是本地一点没有远程库的东西,需要复制一份到本地库,此时用clone

如果本地库中有远程库的东西了,需要从远程库更新内容,此时就用pull,pull只会拉取变动的内容

跨团队协作

image-20221228203850454

GitHub的使用

创建远程库

image-20221228204228547

image-20221228204343707

连接远程库

在你的仓库中,会有HTTPS 和SSH两种连接方式

image-20221228204703150

创建别名

远程库的链接是不易于记忆与操作的 , 需要为远程库的连接创建别名,以方便后续使用。

git remote add 别名 链接

image-20221228205056700

当创建了别名后,查看别名,会看到两个别名,因为拉取和推送都可以使用,所以就会显示两种相同别名的远程库别名。

查看本地的远程库别名

git remote -v

推送到远程库

git push 远程主机名 本地分支名: 远程分支名

如果本地分支名与远程分支名相同,则可以省略为

git push 远程主机名 本地分支名
git push 别名 分支名

别名的位置直接用远程库的链接也是可以的

首次推送,会有这样一个提示框

image-20221228210712829

需要我们选择登录,第一个是利用浏览器登录的账户,第二个是口令登录,一般选择第一个在浏览器打开即可。

image-20221228210822413

点击授权即可

image-20221228211024383

此时在GitHub就可以看到推送成功的文件

image-20221228211036178

注意:如果选择推送的分支在远程库不存在,那么就会在远程库直接创建这个分支。

自从2020年10月之后,GitHub的主分支不再叫master,而是改名为main

从远程库拉取到本地库

git pull 命令用于从远程获取代码并合并本地的版本。

git pull 其实就是 git fetchgit merge FETCH_HEAD 的简写。

与git push 的命令相同

git pull 远程主机名 远程分支名:本地分支名

如果远程分支名与本地分支名相同,则可以省略为

git pull 远程主机名 本地分支名

image-20221228213317133

在利用pull 命令拉取远程库时,会自动将远程库中与本地文件中不同的部分做merge,然后自动add、commit

从远程库克隆到本地库

如果你的本地库中没有任何远程库中的东西,这时候你就需要从远程库克隆一份到本地库中了。

git clone url

git clone 拷贝一个 Git 仓库到本地,让自己能够查看该项目,或者进行修改。

克隆会干这三件事

  • 拉取代码
  • 初始化本地库
  • 创建远程库连接的别名

团队内操作

为远程库添加协作成员,如果不设置,其他人是不能够提交代码的

在远程库的setting中

image-20221228230113384

image-20221228230233485

然后输入要邀请的人的GitHub账户名,选择邀请即可

邀请发送之后,需要将邀请函复制下来,利用沟通工具将邀请链接发送给他人,他人点击就代表同意加入此库协作。

跨团队协作

当团队外的人需要对项目进行改动时,因为无法进入团队内,此时就是跨团队协作了

此时打开别人库的链接,点击fork

image-20221228231355533

image-20221228231417990

此时就会在自己的账号中有一个这样的远程库,自己改动即可

当自己修改完成之后,需要将项目的内容发送回原始负责人,原始负责人只要拉取本库到自己的库即可。

首先修改完后,在库中点击pull request生成拉取请求,这样原始负责人才可以在这个库中拉取到个人库

image-20221228232324896

image-20221228233230039

image-20221228233233075

image-20221228233252629

这样,当负责人打开本地库后,就会有拉取请求。

SSH免密登陆

前面连接远程库都是使用的HTTPS连接,但是还有一个SSH的连接

如果是初始使用SSH,会提醒没有公钥,无法使用

image-20221228233929197

创建公钥

首先检查本地主机是否有公钥

需要打开C盘user目录下对应的用户,找找有没有.ssh这个文件夹,如果有,代表你的本地是有公钥的,如果没有这个文件夹,接下来咱们就创建。

在此目录下右键git bash,输入一下命令

ssh-keygen -t rsa -C "your_email@example.com"
ssh-keygen -t rsa -C "1793645613@qq.com"

代码参数含义:

-t 指定密钥类型,默认是 rsa ,可以省略。 -C 设置注释文字,比如邮箱。

接下来直接回车就行

image-20221228234418171

出现此标志,代表本地公钥生成成功

在此目录下就会看到.ssh文件夹

image-20221228234458106

打开此文件夹,会看到这两个文件

image-20221228234541767

打开.pub文件,将里面的密文复制一份

image-20221228234639904

然后打开GitHub,打开个人主页中的setting按钮

image-20221228234730433

image-20221228234742251

image-20221228234824140

image-20221228235003848

这样,在Git中连接此账号的库时,就不会有登录的提醒了。

image-20221228235309339

复制了这个SSH连接后,再在Git中使用此链接来pull、push就不会需要登录了。

IDEA集成Git

在日常工作中,很少用git bash , 都会在编译器中集成Git工具,直接在编译器中使用集成的Git非常方便。

忽略文件

在正常开发中,项目中用到的一些无关文件,是不需要交给git管理的,比如说IDEA的配置信息等。

配置一个xxx.ignore文件,文件名随便,但是后缀必须是.ignore

理论上这个文件放在什么地方都可以,但是一般都放在本地用户的目录下。

# 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文件中

同样是在用户的目录下,会发现一个.gitconfig的配置文件,在此文件中加入此配置信息,注意路径是.ignore的路径

[core]excludesfile = C:/Users/刘明凯的专属computer/git.ignore

注意:将windows目录的反斜杠改成斜杠

IDEA中集成本地Git

image-20221229133152305

image-20221229133241759

image-20221229133314331

image-20221229133502252

IDEA中使用Git

image-20221229135028135

此时在文件管理中打开项目,就会看到项目的根目录下有一个.git的文件夹,代表这个项目已经被git识别接管了。

image-20221229135148955

此时,就会看到项目中的部分文件变红,因为还没有添加到git的暂存区,所以爆红.

image-20221229135405630

此时可以在文件上右键,选择git add

image-20221229151516784

也可以在整个项目上右键,git add

image-20221229151704319

同理,右键commit,填写commit信息

版本切换

在IDEA中如何查看有哪一些版本?

在右下角的Git中

image-20221229152354993

image-20221229152654198

那如何切换版本呢?只需要在刚才的日志上某个版本,右键checkout

image-20221229152823457

IDEA分支管理

首先是创建分支

在项目上右键,就能看到分支管理

image-20221229153205720

image-20221229153221742

或者也可以在IDEA的右下角,点击分支名也是可以的

image-20221229153339775

创建完成分支之后,直接在点击就可以切换分支

image-20221229161501321

分支合并

切换到主分支后,选中要合并的分支,点击合并即可

image-20221229162131597

分支冲突

在合并分支时,难免会有代码冲突,在IDEA中如何解决代码冲突的问题

当在合并时,发生了冲突,IDEA就会显示这样的页面

image-20221229162818559

image-20221229162859282

image-20221229162946202

这时候日志就会显示分支合并

image-20221229163025504

IDEA集成GitHub

设置GitHub账号

image-20221229163150129

image-20221229163259172

如果需要手动输入Github账号就手动输入,但是我这是直接调用网页端的GitHub进行授权。

image-20221229163402373

添加成功后,就能看到GitHub账号的信息

image-20221229163426678

或者使用口令登录,需要去GitHub账号生成一个口令

在个人账户的setting中有一个开发人员选项

image-20221229163815503

image-20221229163832336

image-20221229163852220

image-20221229163924975

image-20221229163947898

**注意:**Token生成之后只会显示一次,需要赶紧复制这个token,刷新网页后,在GitHub上就没有了这个Token的任何痕迹,一定要妥善保管这个Token

然后回到IDEA,将复制的Token粘贴到口令登录框即可

image-20221229164148342

IDEA推送到远程库

因为IDEA已经默认安装了GitHub的插件,所以可以直接在IDEA中操作GItHub

image-20221229165435600

image-20221229165457437

image-20221229165538767

就会在GitHub上看到新建了一个库

image-20221229165904320

将项目推送到GitHub

可以在项目上右键推送

image-20221229170151097

也可以在上方导航栏,选择push

image-20221229170246853

IDEA默认使用的是HTTPS连接,但是此链接会受到网络波动影响,可以使用SSH连接

在推送的页面,选择自定义链接

image-20221229170438714

将复制的远程库的SSH连接复制进去即可

image-20221229170639802

从GitHub拉取远程库

在Push时,需要保证远程库的版本与本地项目一致,所以需要先手动pull一下,然后再push

image-20221229171206225

image-20221229171320562

从远程库克隆到IDEA中

image-20221229171732435

image-20221229171813552

Gitee的使用

国内版的GitHub,由于GitHub的服务器在国外,由于网络原因会连接不上,就有人开发了国内版的代码托管中心——Gitte

使用起来基本与GitHub相同。

IDEA默认没有安装Gitee,需要自己手动安装一下Gitee的插件

image-20221229180808179

安装完成之后,就可以在IDEA中看到Gitee的选项

image-20221229180946713

同样,像GitHub一样,添加自己的Gitee账号

image-20221229181023720

image-20221229181426746

其余操作与GitHub相同

注意:目前是2022-12-29 码云创建公开仓库需要申请,所以不建议使用码云

从GitHub迁移项目到Gitee

image-20221229181930880

选择GitHub上的仓库的地址,注意要使用HTTPS连接

image-20221229182023670

image-20221229182049583

同时,Gitee还支持强制同步,因为库是从GitHub迁移过来的,如果Github上的库更新了,那么可以点击强制同步

image-20221229182207529

GitLab

利用GitLab自搭建代码托管平台,在大公司中比较常用。

比如说,你的公司并不打算使用GitHub来托管代码(因为private的库是收费的,但是你的公司不打算开源),这时公司就可以使用GitLab来自己搭建属于本公司的代码托管平台。

安装GitLab

GitLab官网https://about.gitlab.com

image-20221229183916434

会看到目前支持的服务器版本

image-20221229183940281

服务器准备

一般都是公司准备好的,服务器端不是我们管的。

使用GitLab时跟GitHub相同就行。

IDEA中使用GitLab

首先在IDEA中安装GitLab的插件

image-20221229192955698

安装完成之后,就可以看到GitLab的选项

image-20221229193425674

向这里面添加服务器地址即可

image-20221229193429373

使用时与GitHub、Gitee用法相同。


http://www.ppmy.cn/news/7701.html

相关文章

第003课 - 分布式基础概念

文章目录 集群、分布式、节点远程调用负载均衡服务注册/发现和注册中心服务熔断和降级API网关我们以前将所有的代码、页面、sql语句,写到一个应用,如果有一个地方有问题,整个就不可用了。 我们可以基于业务边界进行服务微化和拆分。 如果有一个出现了问题,不影响其他服务…

飞行机器人专栏(九)-- 多传感器固定端口分配

目录 ​编辑 1 /dev/设备列表 2 ttyUSB*端口ID 3 端口别名rules动态绑定 4 launch文件配置 1 /dev/设备列表 lsusblsusb -t 2 ttyUSB*端口ID 查看/dev/ttyUSB* 设备端口ID :0403:6014 找到对应USB的设备ID,这里是 0403:…

C# 数据库访问方法

一 访问数据的两种基本方式 1 方式1:DataAdapter及DataSet ① 适合于“离线”处理; ② 自动建立Command对象; 方式2:DataReader ① 适合于只读数据,效率较高 它们都要使用Connection及Command 二 Connection对象…

DOM-获取DOM元素、修改内容和属性、定时器-间歇函数

一、Web API基本认知 1. 作用和分类 作用: 就是使用 JS 去操作 html 和浏览器 分类:DOM (文档对象模型)、BOM(浏览器对象模型) 2. 什么是DOM DOM(Document Object Model——文档对象模型)是…

Jmeter分布式测试

因为jmeter本身的性能问题,有时候为了尽量模拟业务场景,需要模拟大量的并发请求,此时单台压力机就显得力不从心。针对这个情况,jmeter的解决方案是支持分布式压测,即将大量的模拟并发分配给多台压力机,来满…

linux连接器脚本前奏-基于x86(一)

从今天开始进入正文,和讲解liteos一样,我们先从连接器脚本开讲。我们知道连接器脚本描述了编译输出程序的布局,那么linux内核编译输出的布局是怎么样的呢?听我慢慢道来,关于连接器脚本的大概使用用途,可以参见 liteos链接器脚本一 liteos链接器脚本二 这里先说明一下对于…

朗润国际期货:2022年财料人物、机构、商品

2022年财料年度人物: 马斯克,财料出场次数:15次 他,全球收入*高公司高管,还是前世界首富(12月刚被挤下)。 他,身兼数职,业务包括但不限于造电动汽车、搞社交媒体、做火…

BOSS直聘自动投简历的实现过程

这两年疫情,公司业务越来越差,必须得准备后路了,每天睡前都会在直聘上打一遍招呼,一直到打哈欠有睡意为止...,这样持续了一周,发现很难坚持,身为一名资深蜘蛛侠,怎么能这样下去呢?于…