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

news2024/12/26 13:57:40

今天想把自己的课设上传到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
*.rar

hs_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.coloradmin.cn/o/126649.html

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

相关文章

Python常用函数笔记汇总2

1.分组汇总groupby 2.计算空值 # py计算空值 data.isnull().sum(axis0) data.notnull().sum(axis0)# py去重计数 data_op[id_num_op].value_counts().size data_op[id_num_op].size3.保留两位小数 # predict_proba保留两位小数 gnb GaussianNB() pre gnb.fit(X_train,y_tr…

pytest-日志配置

如果想要在run测试用例时,打印出由python的logging的日志,可以在pytest中进行相应的配置 pytest可以将日志输出到控制台或者文件中,分别对应不同的配置项 pytest的日志配置文件主要在pytest.ini文件中进行配置,包括配置日志的格式…

ARM64内存虚拟化分析(5)内存布局更新

1 添加MR 创建的MR需要通过函数memory_region_add_subregion()添加到系统中,提交MR,并最终往KVM提交内存的变化。 过程如下: 将mr设置为subregion的container;设置subregion在虚拟机中的物理地址;调用memory_region_t…

FOHEART H1数据手套_Unity3D SDK开发

本教程介绍使用FOHEART H1数据手套在Unity3D中,显示每段骨骼的位置与旋转信息。 需要准备的软硬件: 1、FOHEART H1数据手套 2、MotionVenus客户端 3、Unity3D软件 4、开发包MotionVenus_U3DPlugin_v2.0_H1GloveDev_SDKTest.unitypackage 1、连接数…

HFSS学习笔记

以下所有操作,都是基于2022版本的HFSS。一、HFSS solution模式选择位置:HFSS-Solution type类型表格。二、单位设置位置:Modeler-Units点击后,通常选用单位为:mm三、绘制物体点击红圈1的draw,右侧有些形状可…

MCU-51:单片机实时时钟

目录一、什么是时钟1.1 实时时钟1.2 时序二、DS1302实时时钟2.1 DS1302介绍2.2 引脚定义和应用电路三、代码演示3.1 数字时钟3.2 DS1302可调时钟注意:一定要看一、什么是时钟 1.1 实时时钟 real time clock,真实时间,就是所谓的xx年x月x日x…

我的统计学学习笔记(持续更新)

目录数据:变量和观测统计学描述统计数据的收集数据的可视化数据的规律性特征统计推断参数估计假设检验贝叶斯统计基础知识:概率论数据:变量和观测 变量(column)、观测(row)、测量(assign number to observation)。 统计学 描述统计 数据…

YOLO-V5 系列算法和代码解析(四)—— 网络结构

文章目录辅助工具网络配置文件网络构建网络推理绘制网络结构辅助工具 借助辅助工具可视化网络结构,达到辅助阅读代码,进而辅助手动绘制结构清晰的网络结构,最终理解整个网络架构的目的,为深入学习【yolo-v5】提供有效的保障。 ten…

阿里妈妈内容风控模型预估引擎的探索和建设

作者:徐雄飞、金禄旸、滑庆波、李治 内容作为营销的重要载体,能够促进信息的交流和传播。在营销场景中,广告高曝光的特性放大了风险外漏带来的一系列问题,因此对内容的风控审核就显得至关重要。本文将为大家分享阿里妈妈内容风控模…

DOM节点操作

节点操作 改变元素节点中的内容可以使用两个相关属性:innerHTML innerText 注意字符串不能换行 innerHTML属性能以HTML语法设置节点中的内容 innerText属性只能以纯文本的形式设置节点中的内容 节点创建 document.createElement()方法用于创建一个指定tagname…

android studio编译慢

前言 android studio编译慢一直就是一个问题,很久以前使用eclipse,编译速度很快,在还没开始正式工作的时候就开始使用android studio,那时候还是0.8 很原始,主要那时候还没开始工作,所以编译快慢没感觉&am…

TikTok Shop跨境服务市场上线;俄罗斯速卖通发布延误通知

让我们一起来看看今日都有哪些新鲜事吧!01 TikTok Shop跨境服务市场上线 12月28日消息,服务商是助力商家在TikTok Shop成长非常重要的合作伙伴,TikTok Shop希望通过上线服务市场帮助商家快速了解服务商,筛选符合自身需求的服务商…

【JavaSE成神之路】Java面向对象(上)

哈喽,我是兔哥呀,今天就让我们继续这个JavaSE成神之路! 这一节啊,咱们要学习的内容是Java的面向对象。 首先我们回顾一下,之前的章节我们学到了哪些东西。 我们学会了写一个类,然后里面弄一个main方法&am…

layer2 实现方式之状态通道

状态通道也算是一种比较热门的扩容方案,状态通道解决方案通过将链下交互和链上清算隔离开,能够在保障一定程度的非中心化和资产安全性的同时,实现速度更快、费用更低的交易。状态通道作为一种链下扩容方案,从一般到特殊分为通用状…

时光飞逝,博客两周年啦

原文链接:时光飞逝,博客两周年啦 博客自 2020年12月10日 运营以来,已经成功走过两年啦(差点成为两年半的博主)。 在这两年中,曾替无数网友解答了各种关于建站的疑难杂症,此处略过 30000 字。 …

linux系统动态库的连接

前言:在应用程序开发过程中,难免会用到第三方库,有的是开源的第三方库,有的是不开源的,还有的是自己写的库。上篇文章总结了应用程序调用静态库《linux中静态库编译与使用》,本文总结了几种在应用程序中快速…

八、esp8266建立基本网络服务器

1、网络服务器 (1)网络服务器有很多类型,它们功能十分丰富。通常承担网络服务器工作的设备都是运算能力比较强大的电脑。 (2)ESP8266虽然也能实现网络服务器的一些功能,但是毕竟它的运算能力是无法与那些昂贵的服务器电脑相比较,因此ESP826…

STM32的升级--ICP/ISP/IAP

ICP/ISP/IAP 区别 ICP(In-Circuit Programing): 通过J-Link/SWD等下载器烧写程序,上位机需要借助其他硬件的参与才能更新固件,可以更新MCU的所有存储区域; ISP(In-System Programing): 通过MCU出厂时固化的一个bootloader升级程序&#xff0…

第四节 空间参考类的属性说明

空间参考类:SpatialReference 说明 空间参考类是arcpy下面的一级类,用于定义空间参考的各类信息,主要是坐标信息。 空间参考Spatial Reference与坐标系最大的区别,在于空间参考除了定义坐标系以外,还要定义一系列地理…

Java BigDecimal总结

文章目录Java BigDecimal总结概述float 和 double的问题创建BigDecimal对象BigDecimal.valueOf()源码分析equals() 和 compareTo()BigDecimal设置精度和舍入模式舍入模式介绍BigDecimal转字符串DecimalFormat 格式化总结Java BigDecimal总结 概述 BigDecimal类在Java的java.m…