当前位置: 首页 > news >正文

在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.comHostName gitee.comUser gitIdentityFile ~/.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

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

相关文章:

在IDEA中使用Git

一、准备工作 这里我们使用 Gitee 做例子&#xff0c;使用 SSH 协议。看这个文章前最好看一下《》这个文章&#xff0c;了解一下 SSH。 1、生成秘钥对 首先要到 ~/.ssh 目录下进行操作&#xff0c;因为生成的公钥和私钥一般放在这个目录下&#xff0c;Windows 就是在用户目…...

分布式锁(防止同时操作同一条数据)实现分析

1. deleteLocked 方法&#xff1a; public R deleteLocked(String id, String username) {String examReportUserKey "examReportId_" id "_" username;stringRedisTemplate.delete(examReportUserKey);return R.ok(); } 功能&#xff1a;删除指定用户…...

【已解决,含泪总结】Ubuntu18.04下非root用户Anaconda3卸载重装,conda install终于不再报错

为什么要卸载重装 因为我最初安装的Anaconda3的版本是5.2.0&#xff0c;适合python3.6.5&#xff0c;其下的conda版本是4.5.4 我一开始本着能用则用&#xff0c;毕竟不是很懂的原则&#xff0c;尽量不要卸掉重来 但。。。bug像滚雪球一样&#xff0c;越来越多 conda install指…...

大语言模型(LLM)量化基础知识(一)

请大家关注我的知乎博客&#xff1a;- 派神 - - 知乎 随着大型语言模型 (LLM) 的参数数量的增长,与其支持硬件&#xff08;加速器内存&#xff09;增长速度之间的差距越来越大&#xff0c;如下图所示&#xff1a; 上图显示&#xff0c;从 2017 年到 2022 年&#xff0c;语言模…...

hadoop面试题

一、单项选择题 1、目前&#xff0c;Hadoop的最高版本是哪个&#xff08; A &#xff09; A、Hadoop3.x B、Hadoop2.x C、Hadoop4.x D、Hadoop1.x 2、大数据的4V特征是指? &#xff08; B &#xff09; A、数据量大(Volume)、类型繁多(Variety)、价值密度低(Va…...

mysql 安装 windows

新版安装 新版本安装 如果出现initializing database无法安装 则用我当前版本传送门 如MySQL 安装时没有developer default 选项 解决方法传送门 如果上述还不行 可以选择full 汉化下载 传送门...

24下软考中级网络工程师考前必背22页

数据中心选址原则 1、地理位置&#xff1a;备选址地点发生自然灾害的概率和频率、环境危害因素以及气候因素 2、电力能源供应&#xff1a;可用性、成本因素 3、通讯基础设施&#xff1a;光纤主干线路及其距数据中心选址的距离、光纤类型、服务运营商的类型及其支持的服务模式…...

Java类和对象(下篇)

今天接着学习类和对象(苦笑)(苦笑)(苦笑) 1. 封装 1.1 封装的概念 面向对象程序三大特性&#xff1a;封装、继承、多态。 而类和对象阶段&#xff0c;主要研究的就是封装特性。 何为封装呢&#xff1f;简单来说就是套壳屏蔽细节。 举例&#xff1a;对于计算机使用者而言&am…...

k8s图形化显示(KRM)

在master节点 kubectl get po -n kube-system 这个命令会列出 kube-system 命名空间中的所有 Pod 的状态和相关信息&#xff0c;比如名称、状态、重启次数等。 systemctl status kubelet #查看kubelet状态 yum install git #下载git命令 git clone https://gitee.com/duk…...

apache poi 实现下拉框联动校验

apache poi 提供了 DataValidation​ 接口 让我们可以轻松实现 Excel 下拉框数据局校验。但是下拉框联动校验是无法直接通过 DataValidation ​实现&#xff0c;所以我们可以通过其他方式间接实现。 ‍ 步骤如下&#xff1a; 创建一个隐藏 sheet private static void create…...

【canal 中间件】canal 实时监听 binlog

文章目录 一、安装 MySQL1.1 启动 mysql 服务器1.2 开启 Binlog 写入功能1.2.1创建 binlog 配置文件1.2.2 修改配置文件权限1.2.3 挂载配置文件1.2.4 检测 binlog 配置是否成功 1.3 创建账户并授权 二、安装 canal2.1 安装 canal-admin(可选)2.1.1 启动 canal-admin 容器2.1.2 …...

JVM垃圾收集算法、对应收集器和选择建议

如果说垃圾收集算法是内存回收的方法论&#xff0c;那么垃圾收集器就是内存回收的具体实现。 到目前为止还没有最好的垃圾收集器出现&#xff0c;也没万能的垃圾收集器。实际使用中&#xff0c;根据具体应用场景选择合适的垃圾收集器。 1、垃圾收集算法 垃圾收集算法可以从高…...

如何在算家云搭建Aatrox-Bert-VITS2(音频生成)

一、模型介绍 ‌ Aatrox - Bert -VITS2 模型是一种基于深度学习的语音合成系统&#xff0c;结合了 BERT 的预训练能力和 VITS2 的微调技术&#xff0c;旨在实现高质量的个性化语音合成。 二、模型搭建流程 1. 创建容器实例 进入算家云的“应用社区”&#xff0c;点击搜索找到…...

ceph灾备之cephfs snapshot mirror和rsync对比

背景 最近要做ceph集群之间的灾备功能&#xff0c;主要讨论文件存储&#xff0c;因为ceph集群容量越来越大&#xff0c;接入的业务也越来越多&#xff0c;一旦出现故障&#xff0c;恢复时间都是小时级(根据经验每年都会出现几次这种事故)&#xff0c;对于核心业务无法接受&…...

【工具分享】Plutocrypt勒索病毒解密工具

前言 Plutocrypt勒索软件首次出现在2021年&#xff0c;作为CryptoJoker勒索软件的变种。该恶意软件通过钓鱼邮件和恶意链接传播&#xff0c;主要针对个人和小型企业用户。Plutocrypt使用了.NET框架开发&#xff0c;并依赖AES-256和RSA-4096的加密算法来加密受害者的文件。与Cr…...

IDEA启动提示Downloading pre-built shared indexes

Download pre-built shared indexes Reduce the indexing time and CPU load with pre-built JDK shared indexes 翻译&#xff1a; 下载预构建的共享索引 使用预构建的JDK共享索引减少索引时间和CPU负载. 使用预构建的JDK共享索引可以显著减少索引构建时间和CPU负载&#xf…...

[HCTF 2018]WarmUp 1--详细解析

打开靶机&#xff0c;进入界面&#xff1a; 信息搜集 当前界面没有任何有用信息。 想到查看页面源代码。右键–查看页面源代码 看到hint&#xff1a;<!--source.php--> 进入/source.php页面&#xff0c;看到页面源代码&#xff1a; <?phphighlight_file(__FILE_…...

软考教材重点内容 信息安全工程师 第1章 网络信息安全概述

第 1 章 网络信息安全概述 1.1.1 网络信息安全相关概念 狭义上的网络信息安全特指网络信息系统的各组成要素符合安全属性的要求&#xff0c;即机密性、完整性、可用性、抗抵赖性、可控性。 广义上的网络信息安全是涉及国家安全、城市安全、经济安全、社会安全、生产安全、人身安…...

TOSHIBA 74VHC00FT COMS汽车、工业企业的选择

74VHC00FT 是一种四路双输入 NAND 门&#xff0c;属于 CMOS 系列数字集成电路。它采用东芝先进的硅栅 C2MOS 技术设计&#xff0c;能够实现类似于双极性肖特基 TTL 逻辑电路的高速运行&#xff0c;同时保持 CMOS 器件的低功耗。这种独特的结合使其非常适合需要高性能和低功耗的…...

【Android】使用productFlavors构建多个变体

项目需求 在一个设备上安装两个一样的程序app 需求解决 我们知道每一个app都有一个包名的&#xff0c;如果一个app在Android设备上安装之后&#xff0c;再安装这个app的话会进行覆盖安装&#xff0c;因为他们两个的包名是一样的&#xff0c;默认是一个app。 但是我们现在需…...

腾讯游戏卡顿终极解决方案:ACE-Guard资源限制器完整指南

腾讯游戏卡顿终极解决方案&#xff1a;ACE-Guard资源限制器完整指南 【免费下载链接】sguard_limit 限制ACE-Guard Client EXE占用系统资源&#xff0c;支持各种腾讯游戏 项目地址: https://gitcode.com/gh_mirrors/sg/sguard_limit 你是否在玩《地下城与勇士》、《英雄…...

H3六边形层次化地理空间索引:重新定义空间数据处理的颠覆式突破

H3六边形层次化地理空间索引&#xff1a;重新定义空间数据处理的颠覆式突破 【免费下载链接】h3 Hexagonal hierarchical geospatial indexing system 项目地址: https://gitcode.com/gh_mirrors/h3/h3 地理空间数据处理长期面临着精度与效率难以兼顾的困境。传统网格系…...

深入解析NAND Flash基础操作与系统集成——从阵列结构到多Die协同

1. NAND Flash基础结构与工作原理 NAND Flash存储器是现代存储系统的核心组件&#xff0c;从U盘到企业级SSD都依赖这项技术。要理解它的强大之处&#xff0c;得先从它的物理结构说起——想象一个巨大的立体停车场&#xff0c;每个停车位就是一个存储单元&#xff0c;而控制电路…...

STM32L152RE 32MHz时钟配置库:超低功耗MCU高频稳定启动方案

1. 项目概述ST_L152_32MHZ是一个专为 STMicroelectronics Nucleo-L152RE 开发板设计的轻量级时钟配置库&#xff0c;其核心目标是将系统主频&#xff08;SYSCLK&#xff09;从出厂默认的 32 kHz LSE 或 16 MHz HSI 稳定提升至32 MHz&#xff0c;并确保所有关键外设时钟&#xf…...

量子行走:从理论到Python实现——4. 量子算法设计与实现

目录 4. 量子算法设计与实现 4.1 基础量子算法 4.1.1 Deutsch-Jozsa算法 4.1.2 量子傅里叶变换 4.1.3 Grover搜索算法 4.2 Shor因数分解与离散对数 4.2.1 算法框架与经典预处理 4.2.2 量子相位估计的精度分析 4.3 变分量子算法 4.3.1 变分量子本征求解器 4.3.2 量子近…...

猫抓浏览器插件:网页资源嗅探与下载的终极解决方案

猫抓浏览器插件&#xff1a;网页资源嗅探与下载的终极解决方案 【免费下载链接】cat-catch 猫抓 chrome资源嗅探扩展 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 你是否曾在浏览网页时&#xff0c;看到精彩的视频、音频或图片资源&#xff0c;却苦于无…...

用FastMCP中间件给你的AI应用加把锁:手把手实现MySQL数据库鉴权(附完整代码)

用FastMCP中间件构建企业级AI服务安全网关 当团队内部的AI工具从原型走向生产环境时&#xff0c;安全往往成为最容易被忽视的环节。上周我接手了一个金融数据分析平台的审计工作&#xff0c;发现开发团队竟然直接将未加密的股票查询接口暴露在公网&#xff0c;仅通过IP白名单控…...

别再手动拖拽了!用Mermaid语法+draw.io,5分钟搞定系统设计流程图

从文本到图表&#xff1a;Mermaid与draw.io的高效设计工作流革命 每次系统设计会议后&#xff0c;你是否也经历过这样的场景&#xff1a;白板上密密麻麻的逻辑草图需要转化为电子版&#xff0c;而传统拖拽式绘图工具让你在调整箭头和对齐方框上耗费半小时&#xff1f;作为经历…...

路侧3D检测翻车实录:Rope3D数据集标签里的航向角坑,我是怎么填上的

路侧3D检测实战&#xff1a;Rope3D数据集航向角问题的深度解析与修复方案 当你在深夜盯着屏幕上那些"反向行驶"的虚拟车辆时&#xff0c;那种荒诞感会让人瞬间清醒。这不是科幻场景&#xff0c;而是我在使用Rope3D数据集进行路侧3D目标检测时遇到的真实困境——车辆航…...

LazyLLM架构设计揭秘:低代码如何支撑复杂多Agent系统

LazyLLM架构设计揭秘&#xff1a;低代码如何支撑复杂多Agent系统 【免费下载链接】LazyLLM 项目地址: https://gitcode.com/gh_mirrors/la/LazyLLM 在当今AI应用开发领域&#xff0c;构建复杂的多Agent系统往往需要大量的工程投入和专业知识。然而&#xff0c;LazyLLM框…...