在IDEA中使用Git

一、准备工作

这里我们使用 Gitee 做例子,使用 SSH 协议。看这个文章前最好看一下《》这个文章,了解一下 SSH。 

1、生成秘钥对

首先要到 ~/.ssh 目录下进行操作,因为生成的公钥和私钥一般放在这个目录下,Windows 就是在用户目录的 .ssh 目录下,如果没有 .ssh 可以自行创建。

在这个目录下打开 Git bash 中使用以下指令生成秘钥对:

ssh-keygen -t ed25519

然后命令行中就会出现以下提示:

依次是输入秘钥的存储目录以及秘钥文件的名称,后面是输入秘钥文件的密码,然后确定密码。然后就生成了秘钥对:

然后就可以在目录中看到了生成的秘钥对:

2、配置 Gitee 的 SSH

可以在 Gitee 的用户设置中找到以下界面,然后配置 SSH,

将上面生成的公钥放到这里,然后就可以尝试进行连接了。

3、测试连接

我们可以通过以下指令进行连接测试:

ssh -i ~/.ssh/keydir -T git@gitee.com

将这里的 keydir 替换为秘钥所在位置,如果是第一次连接,就会出现以下提示:

The authenticity of host 'gitee.com (180.76.198.225)' can't be established.
ED25519 key fingerprint is SHA256:+ULzij2u99B9eWYFTw1Q4ErYG/aepHLbu96PAUCoV88.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])?

这里就就是提示你这个要连接的主机是未知的,让你确认要连接的主机的身份是否真正是你要连接的主机,这里输入 yes 后,就会出现以下提示:

这里说的是,主机名“gitee.com”被永久添加到了已知的主机列表,第二行就是我们成功连接到了 gitee.com。

4、配置 config 文件

可以看到上面我们测试连接的时候,需要使用 -i 参数来指定私钥的位置,每次都这样会很麻烦,所以我们就可以通过配置 config 文件来简化这个操作。

在 Git bash 中使用:

vim config

创建并编辑 config 文件,然后再 config 文件中这样配置:

# Gitee config
Host gitee.com
        HostName gitee.com
        User git
        IdentityFile ~/.ssh/keydir

然后我们再次测试连接,这次我们不使用 -i 指定秘钥文件,发现也可以完成连接。

二、使用 IDEA 拉取一个远程库作项目

1、设置 Git 的路径

首先在设置中设置 Git 的路径,可以看到这里一般是自动检测的,可以自动检测到本机中安装的 Git,然后自动填入目录。

2、拉取远程仓库

我们也可以可以从下面的位置关闭当前的项目,

这样就可以回到仪表盘这里:

首先在仪表盘这里我们可以看到 Get from VCS(Version Control System),可以通过版本控制系统获取项目,点击这里的按钮,就可以得到以下窗口:

实际上也可以通过以下方式得到上面的窗口:

版本控制我们选择 Git,然后就可以在 URL 的框中填入我们的远程仓库的链接,这里我们使用 SSH 链接。

我们点击“Clone”按钮后,就可以完成克隆了,然后我们就可以看到了这个库的结构了。

3、对仓库的一些操作

1)添加文件到暂存区

我们在这个项目中新增一个文件,然后就会出现以下窗口:

这里就是提示我们是否要将这个新建的文件添加到 Git 中,如果点击取消,我们接下来还要手动地添加。这里我们暂时点击取消。

然后我们可以 add 这个文件:

右键这个文件,然后进行上图的操作,就可以将这个文件添加到暂存区。

2)提交到本地仓库

通过这样的操作,我们可以提交文件到本地仓库。

这里会需要我们填写提交的备注。

3)将本地仓库推送到远程仓库

通过以上的操作将本地仓库推送到远程仓库。

然后我们就可以在远程仓库中看到我们新建的文件:

4、补充

上面的对于仓库的操作,我们是使用的图形化界面操作的,实际上我们也可以在 IDEA 中的终端中使用命令行指令进行这些操作。

打开终端之后,我们就可以在终端中使用对应的指令进行对版本的控制了。例如下面这样:

三、IDEA 本地已有项目如何关联到远程仓库

如果我们在本地就已经有一个项目,这个项目已经完成了一些,但是并没有从一开始就纳入版本管理。现在我们需要将这个项目关联到远程仓库,需要怎么做呢?

1、方法一

在 Gitee 中创建一个仓库(非空仓库和空仓库都行):

创建仓库之后,复制仓库的地址,在本地的一个目录中克隆这个仓库,然后进入目录中:

然后将这些文件全部剪切到你的项目中,然后就可以在项目中使用 git 管理了。

2、方法二

1)创建了空仓库

在 Gitee 中创建一个空仓库(这里最好创建空仓库,也就是不勾选上面框中的选项)。

然后在本地项目的目录中使用:

git init

初始化仓库,然后使用:

git remote add origin 远程仓库链接

将本地仓库与远程仓库关联起来,然后就可以进行文件添加到暂存区,然后提交文件到本地仓库:

git add .
git commit -m "注释"

然后就可以将本地仓库提交到远程仓库了:

git push -u origin master

2)创建了非空仓库

如果你创建了非空仓库,操作就比较麻烦了。首先在推送到远程仓库前的过程是一致的:

git init
git remote add origin 远程仓库链接
git add .
git commit -m "注释"

接下来,如果你直接使用:

git push -u origin master

就会出现以下提示:

这里就是提示远程仓库有的部分本地没有,所以我们在推送之前需要拉取远程仓库:

但是也不能只是直接使用以下指令:

git pull origin master

因为会出现以下提示:

这里显示的是本地分支落后于远程的仓库。

这里我们就要使用:

git pull origin master --allow-unrelated-histories

这里就是允许无关的历史操作,然后非空库中的文件就会被添加到本地仓库中,然后就可以使用:

git push -u origin master

指令了。后面就可以进行正常的版本控制了。

3)补充

在使用:

git pull origin master --allow-unrelated-histories

指令时,如果本地仓库和远程仓库有同名的文件,就像我的本地仓库有 .gitignore 文件,远程仓库也有 .gitignore 文件,这时就会出现以下提示(这里实际上已经完成了 pull 操作,只有 .gitignore 文件的冲突没有解决):

这里显示的是自动合并失败,因为 .gitignore 文件在本地和远程仓库中都有更改,所以 git 无法自动合并两个文件,所以需要我们手动合并这个文件。

这时我们可以直接查看本地的 .gitignore 文件,可以发现文件内容已经被 git 标记了:

<<<<<<< HEAD

### IntelliJ IDEA ###
out/
!**/src/main/**/out/
!**/src/test/**/out/

=======

# Compiled class file
*.class

>>>>>>> cc274b9ccf401266cd6fea3dbec5b94ba5a26594

git 的标记就是:

<<<<<<< HEAD

=======

>>>>>>> cc274b9ccf401266cd6fea3dbec5b94ba5a26594

Git 会展示本地更改(<<<<<<< HEAD======= 之间)和远程更改(=======>>>>>>> origin/master 之间)。

接下来我们就可以对这个 .gitignore 文件进行更改,决定我们需要保留的部分,可以删除部分不需要的条目,也可以合并一些条目。

当我们编辑好 .gitignore 文件后,我们就可以使用:

git add .gitignore
git commit -m "fixed the conflict about .gitignore file"

将 .gitignore 文件提交到暂存区,然后进行提交。

最后,我们可以将更改推送到远程仓库:

git push -u origin master

这样就完成了对重名文件的合并。

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

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

相关文章

Linux下通过sqlplus连Oracle提示字符是乱码▒▒▒[

先参考https://www.cnblogs.com/wrencai/articles/4374451.html 理解下Oracle编码字符集的概念 如下图,刚开始连上是软吗▒▒▒[ 执行export NLS_LANGJAPANESE_JAPAN.AL32UTF8 (这个仅在当前会话起作用)如果好了,说明字符集是这个,不行在尝试别的字符集 如果要永久设置 vim …

Flyweight(享元)

1)意图 运用共享技术有效地支持大量细粒度的对象。 2)结构 享元模式的结构如图 7-36 所示。 其中: Flyweight 描述一个接口&#xff0c;通过这个接口 Flyweight 可以接受并作用于外部状态 ConcreteFlyweight 实现 Flyweight 接口&#xff0c;并为内部状态(如果有)增加存储空…

微信小程序中使用离线版阿里云矢量图标

前言 阿里矢量图库提供的在线链接服务仅供平台体验和调试使用&#xff0c;平台不承诺服务的稳定性&#xff0c;企业客户需下载字体包自行发布使用并做好备份。 1.下载图标 将阿里矢量图库的图标先下载下来 解压如下 2.转换格式 贴一个地址用于转换格式&#xff1a;Onlin…

大数据之多级缓存方案

多级缓存介绍&#xff1f;多级缓存优缺点&#xff0c;应用场景&#xff1f;多级缓存架构&#xff1f; 多级缓存介绍 多级缓存方案是一种优化手段&#xff0c;通过在多个级别上存储数据来提高应用程序的性能和响应速度。以下是对多级缓存方案的详细解析&#xff1a; 一、多级缓…

jupyter notebook启动和单元格cell

【注意&#xff01;&#xff01;&#xff01;】 本章主要讲解数据分析、挖掘入门及进阶知识 - 通过多篇文章【文字案例】的形式系统化进行描述 数据分析专栏&#xff1a;https://blog.csdn.net/2201_75422674/category_12827743.html - 大家喜欢可以订阅一下&#xff0c;不收费…

街道网格领域的数据大屏,在社区治理方面大显身手。

街道网格领域的数据大屏在社区治理中发挥着重要作用。它可以直观地展示社区的人口分布、治安状况、环境问题等各类信息。 通过实时更新的数据&#xff0c;社区工作人员能够及时掌握动态变化&#xff0c;迅速做出决策。色彩鲜明的图表和图形让复杂的数据一目了然&#xff0c;方…

14、NAT和桥接区别

一、NAT模式 NAT相当于是局域网中的局域网&#xff0c;把192.168.21.1当作外网ip&#xff0c;重新划分了一个网关&#xff08;192.168.33.x&#xff09; 二、桥接模式 网桥只是把网络桥接起来&#xff0c;还是原来的网关&#xff08;192.168.21.x&#xff09;&#xff0c;虚拟机…

k8s 处理namespace删除一直处于Terminating —— 筑梦之路

问题现象 k8s集群要清理某个名空间&#xff0c;把该名空间下的资源全部删除后&#xff0c;删除名空间&#xff0c;一直处于Terminating状态&#xff0c;无法完全清理掉。 如何处理 为什么要记录下这个处理的步骤&#xff0c;经过查询资料&#xff0c;网上也有各种各样的方法&…

鸿蒙多线程开发——Worker多线程

1、概 述 1.1、基本介绍 Worker主要作用是为应用程序提供一个多线程的运行环境&#xff0c;可满足应用程序在执行过程中与主线程分离&#xff0c;在后台线程中运行一个脚本进行耗时操作&#xff0c;极大避免类似于计算密集型或高延迟的任务阻塞主线程的运行。 创建Worker的线…

Python实现SSA智能麻雀搜索算法优化BP神经网络回归模型(优化权重和阈值)项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后关注获取。 1.项目背景 随着人工智能技术的发展&#xff0c;机器学习算法在各个领域的应用越来越广泛。其中&#xff0c;神…

qt QListView详解

1、概述 QListView 是 Qt 框架中的一个视图类&#xff0c;用于展示模型中的数据。它基于 QAbstractItemView&#xff0c;支持多种视图模式&#xff0c;如列表视图&#xff08;List View&#xff09;、图标视图&#xff08;Icon View&#xff09;等。QListView 是模型/视图框架…

【MySQL】数据库整合攻略 :表操作技巧与详解

前言&#xff1a;本节内容讲述表的操作&#xff0c; 对表结构的操作。 是对表结构中的字段的增删查改以及表本身的创建以及删除。 ps&#xff1a;本节内容本节内容适合安装了MySQL的友友们进行观看&#xff0c; 实操更有利于记住哦。 目录 创建表 查看表结构 修改表结构 …

图片搜索引擎,来快速实现一个高性能的本地图片搜索引擎

文章来自&#xff1a;苏洋博客 以及基于 Redis 来快速实现一个高性能的本地图片搜索引擎&#xff0c;在本地环境中&#xff0c;使用最慢的稠密向量检索方式来在一张万图片中查找你想要的图片&#xff0c;总花费时间都不到十分之一秒。 写在前面 Redis, 你这浓眉大眼的家伙也正…

DevOps-课堂笔记

各种 aaS 类比于计算机网络的 OSI 参考模型&#xff0c;一个软件应用项目需要不同的支撑层&#xff0c;例如从下至上大概需要&#xff1a; 硬件层面的服务器针对硬件做弹性分配的虚拟化机制&#xff0c;例如虚拟机在虚拟化环境内运行的 OS支撑软件应用的中间件&#xff0c;例…

边缘计算的学习

文章目录 概要何为边缘计算&#xff1f;现阶段&#xff0c;企业使用边缘计算相对云计算 整体架构流程边缘网络组件边缘计算与云安全 研究方向结合引用 概要 edge 何为边缘计算&#xff1f; 边缘计算&#xff08;英语&#xff1a;Edge computing&#xff09;&#xff0c;是一种…

Spring Boot实现文件上传与OSS集成:从基础到应用

目录 前言1. 文件上传的基础实现1.1 前端文件上传请求1.2 后端文件接收与保存 2. 集成第三方OSS服务2.1 准备工作2.2 编写OSS集成代码2.3 修改Controller实现文件上传至OSS 3. 文件上传的扩展&#xff1a;多文件上传与权限控制结语 前言 随着互联网应用的快速发展&#xff0c;…

万字长文解读深度学习——卷积神经网络CNN

推荐阅读&#xff1a; 卷积神经网络&#xff08;CNN&#xff09;详细介绍及其原理详解 CNN笔记&#xff1a;通俗理解卷积神经网络 文章目录 &#x1f33a;深度学习面试八股汇总&#x1f33a;主要组件输入层卷积层 (Convolutional Layer)批归一化层&#xff08;Batch Normalizat…

07 Oracle数据库恢复基础解析:从检查点到归档,一步步构建数据安全防线

文章目录 Oracle数据库恢复基础解析&#xff1a;从检查点到归档&#xff0c;一步步构建数据安全防线一、检查点&#xff08;Checkpoint&#xff09;1.1 检查点定义1.2 检查点重要性1.3 检查点工作原理1.4 手动触发检查点 二、日志&#xff08;Redo Log&#xff09;2.1 日志定义…

css | padding vs margin

前置知识 height是作用域内容(content)区域的 padding和margin用百分比的时候是怎么算的&#xff1f;父元素的宽度。注意&#xff0c;不是根据父元素相应的属性&#xff0c;就是父亲的width 自身的height是0 以下代码&#xff0c;外面盒子是100x10的&#xff0c;里面的widt…

Linux平台C99与C++11获取系统时间

源码: #include <iostream> #include <chrono> #include <ctime> #include <thread>using namespace std; int main() {cout << "===使用C99方式获取系统时间===" << endl;time_t now = time(nullptr);struct tm *tm_c99 = lo…