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

在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

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


http://www.kler.cn/a/387987.html

相关文章:

  • Spring MVC 与 JSP 数据传输
  • 【机器学习】机器学习中用到的高等数学知识-2.概率论与统计 (Probability and Statistics)
  • 实现一个BLE HID鼠标
  • JavaScript高级程序设计基础(四)
  • 机器情绪及抑郁症算法
  • Rust 建造者模式
  • Unity——鼠标点击信息和当前位置获取
  • Java 处理 json 格式数据解析为 csv 格式
  • 在React项目中配置@作为路径别名
  • 企业资产管理:SpringBoot技术实践
  • 安卓智能指针sp、wp、RefBase浅析
  • vue3学习:查询城市天气预报案例(vite组合式实现)
  • 【docker】6. 镜像仓库/镜像概念
  • 【前端】Svelte:组件间通信
  • Mac如何实现最简单的随时监测实时运行状态的方法
  • 【Homework】【1--4】Learning resources for DQ Robotics in MATLAB
  • 24/11/5 算法笔记 DBSCAN聚类算法
  • 高中诊断考如何影响高考?答案都在这 5 个方面
  • PySimpleGUI和Pymysql
  • 安全、高效、有序的隧道照明能源管理解决方案
  • uniapp配置消息推送unipush 厂商推送设置配置 FCM 教程
  • 了解云计算工作负载保护的重要性及必要性
  • 东胜物流软件 AttributeAdapter.aspx SQL 注入漏洞复现
  • 前端根据后端返回的文本流逐个展示文本内容
  • Java基础——类和对象的定义链表的创建,输出
  • 通过 ssh config 快速免密连接服务器