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

【分布式版本控制系统Git】| IDEA 集成 Git 、IDEA 集成 GitHub

目录

 

一:IDEA 集成 Git

1. 环境准备

2. IDEA集成Git基本实操

3. 切换版本

4. 切换分支

5. 合并分支

二:IDEA 集成 GitHub

1. 设置 GitHub 账号

2. 分享工程到 GitHub

3. push 推送本地库到远程库

4. pull 拉取远程库到本地库

5. clone 克隆远程库到本地


一:IDEA 集成 Git

1. 环境准备

(1)为什么要忽略它们?

答:与项目的实际功能无关,不参与服务器上部署运行,例如下面的.idea文件、.iml文件都是IDEA工具自带的文件;把它们忽略掉能够屏蔽 IDEA工具之间的差异!

 (2)怎么忽略?

创建忽略规则文件: xxxx.ignore(前缀名随便起,建议是 git.ignore),这个文件的存放位置原则上在哪里都可以,为了便于让~/.gitconfig 文件引用,建议也放在用户家目录下

git.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 
 
# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml 
hs_err_pid* 
 
.classpath 
.project 
.settings 
target 
.idea 
*.iml 

(3)在.gitconfig 文件中引用忽略配置文件(此文件在 Windows 的家目录中)

注意:这里要使用“正斜线(/)”,不要使用“反斜线(\)” !

[user]
	name = zl
	email = zl@qq.com
[credential]
	helper = manager-core
[core] 
    excludesfile = C:/Users/86177/git.ignore

(4)定位 Git 程序

在Version Control(版本控制工具)----》Git中进行定位!

2. IDEA集成Git基本实操

(1)初始化本地库

此时创建的这个Maven工程,还没有被git管理在工程的文件夹下没有.git文件;所以我们需要先进行初始化!怎么初始化?

VCS-->Import into Version Control-->Create Git Repository

初始化好以后,此时的项目目录下面,就有.git文件,表示被git管理了

此时pom.xml文件是红色的,意思就是检测到是未被追踪状态

功能栏的VCS也变成了Git

(2)添加到暂存区

右键点击项目选择 Git -> Add 将项目添加到暂存区!

此时pom.xml文件是绿色的,意思就是已经添加到暂存区

(3)提交到本地库

右键点击项目选择 Git -> Commit Directory将项目提交到本地库!

添加提交信息, 相当于我们-m参数提交的信息

3. 切换版本

对于我们后续修改了代码,可以不需要再添加到(add)暂存区,因为前面我们都已经追踪过了,可以一步从工作区直接提交到本地仓库!

点击IDEA左下角的Git,可以查看版本

切换到其它的版本

有两个指针表示,绿色的表示当前master分支的指针,黄色的表示当前界面看到的头指针!头指针是指向master的!

 切回到最初的那个版本

4. 切换分支

(1)先创建分支

第一种方式:右击鼠标---》Git---》Branches

出现以下界面

第二种方式:找到右下角---》左击鼠标

(2)切换分支

此时是在hot-fix分支,切换到master分支

5. 合并分支

(1)正常合并:只有hot-fix修改

首先在hot-fix分支,增加代码并提交到本地

package com.zl.git;

public class GitTest {
    public static void main(String[] args) {
        System.out.println("Hello World");
        System.out.println("Hello World2");
        System.out.println("Hello World3");
        System.out.println("hot-fix");
    }
}

切换到master分支,进行合并

绿色的表示有两个分区:hot-fix、master,黄色表示头指针,表示指向的是当前的master!

点击hot-fix,选中Merge把hot-fix合并到master!

此时的master和hot-fix就合并到同一个分支! 

注:如果代码没有冲突,分支直接合并成功,分支合并成功以后,代码自动提交,无需手动提交本地库。

(2)冲突合并

如果 master 分支和 hot-fixx 分支都修改了代码,在合并分支的时候就会发生冲突!

对于master分支,添加代码并提交

package com.zl.git;

public class GitTest {
    public static void main(String[] args) {
        System.out.println("Hello World");
        System.out.println("Hello World2");
        System.out.println("Hello World3");
        System.out.println("hot-fix");
        System.out.println("master-test"); // 添加的代码
    }
}

对于hot-fix分支,添加代码并提交

package com.zl.git;

public class GitTest {
    public static void main(String[] args) {
        System.out.println("Hello World");
        System.out.println("Hello World2");
        System.out.println("Hello World3");
        System.out.println("hot-fix");
        System.out.println("hot-fix test"); // 添加的代码
    }
}

现在站在 master 分支上合并 hot-fix 分支,就会发生代码冲突

点击 Conflicts 框里的 Merge 按钮,进行手动合并代码

手动合并完代码以后,点击右下角的 Apply 按钮

注:此时master分支是两个分支合并后的结果,而hot-fix分支还是原来的结果!并且代码冲突解决,是自动提交本地库!

二:IDEA 集成 GitHub

首先自检IDEA的Version Control有没有GitHub插件

如果没有可以先到插件中去下载

1. 设置 GitHub 账号

第一种情况:跳转到浏览器进行验证,网络不好很难登上!

第二种情况:去 GitHub 账户上设置 token(口令),使用口令进行登录!

注:此口令只会显现一次,刷新就看不到了;但是可以重新再生成!

生成口令的步骤:点击登录头像的图形下标---》选择Settings---》选择最后一行Developer settings---》Personal access tokens,此时有两个选项:

第一种:fine-grained personal access token,即细粒度个人访问令牌。可以对一个仓库设置一个token,还可以设置每一个permission(权限),粒度比较细。

第二种:personal access token (classic),即个人访问令牌(分类化)。

成功生成token后

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

 打开IDEA,使用token登录

学习环境权限作用域都点上

 登录成功界面如下:

2. 分享工程到 GitHub

对于老版本的IDEA是VCS---》Import into VersionControl---》Share Project on GitHub

对于新版本的IDEA是Git(是VCS的位置)---》GitHub---》Share Project on GitHub

创建远程库和别名

这种方式实际上有两个功能:

①先创建了一个Git远程仓库(这个仓库一定是在远程上没有的);

②再把代码整个项目提交到远程仓库Git;

点击share,出现以下界面表示推送成功

在GitHub中查看远程库Git,发现已经把整个项目推送过来

3.  push 推送本地库到远程库

右键点击项目,可以将当前分支的内容 push 到 GitHub 的远程仓库中。

会出现以下界面

 选择Define Remote在这里可以创建远程链接的别名

指定远程仓库的地址和别名

 

选定我们刚才定义的仓库

 

注意:push 是将本地库代码推送到远程库,如果本地库代码跟远程库代码版本不一致,push 的操作是会被拒绝的。也就是说,要想 push 成功,一定要保证本地库的版本要比远程库的版本高!如果本地的代码版本已经落后,切记要先 pull 拉取一下远程库的代码,将本地代码更新到最新以后,然后再修改、提交、推送!

4. pull 拉取远程库到本地库

如果此时我们在远程库手动更改了代码,此时要把项目pull到本地,得到最新的更改版本!

在远程仓库中添加代码

在末尾添加一行代码,此时本地库和远程库的就不同,需要重新拉取pull到本地库,获得最新版本

package com.zl;



public class DaoService {
    public static void main(String[] args) {
        System.out.println("Hello World");
        System.out.println("Hello World");
        System.out.println("我是新增加的代码");
    }
}

选择Git---》pull进行拉取 

根据前面我们push时定义的仓库地址别名进行拉取

成功拉取:如果出现问题,多提交几次

注意:pull 是拉取远端仓库代码到本地,如果远程库代码和本地库代码不一致,会自动 合并,如果自动合并失败,还会涉及到手动解决冲突的问题。

5. clone 克隆远程库到本地

假如此时本地没有git-demo项目,或者说我们把这个项目从本地删除了,此时可以进行克隆

注:pull是原来有这个仓库(项目),拉取仓库中的代码到本地,相当于更新代码的内容;而clone是原来什么都没有,把整个项目clone下来!

输入远程仓库的地址, 并确定拉取的项目放在本地的那个位置

当然我们也可以在打开IDEA的时候进行clone,最终界面是一样的

相关文章:

  • C语言指针链表
  • 全网最完整,接口测试总结彻底打通接口自动化大门,看这篇就够了......
  • 【JVM虚拟机面试宝典】JVM的内存结构是怎么样的?在JVM中会发生内存溢出的区域有那些?— day06
  • C++ string类
  • 细数那些惊艳一时的 CSS 属性
  • 【C语言】你真的了解结构体吗
  • 可做题2(矩阵快速幂,乘法逆元,exgcd)
  • Mysql用户权限分配详解
  • 一文7个步骤从0到1教你搭建Selenium 自动化测试环境
  • 【网络安全工程师】从零基础到进阶,看这一篇就够了
  • 【C陷阱与缺陷】----语法陷阱
  • 解忧杂货铺(五续集):用了无法离开的网站资源
  • 功能测试转型测试开发年薪27W,又一名功能测试摆脱点点点,进了大厂
  • iOS 紧急通知
  • 艹,终于在8226上把灯点亮了
  • 【MySQL经典案例分析】 Waiting for table metadata lock
  • Asm.js的简单介绍
  • CentOS6 编译安装 redis-3.2.3
  • Codepen 每日精选(2018-3-25)
  • gcc介绍及安装
  • Laravel 中的一个后期静态绑定
  • Laravel深入学习6 - 应用体系结构:解耦事件处理器
  • spring security oauth2 password授权模式
  • vue2.0开发聊天程序(四) 完整体验一次Vue开发(下)
  • vuex 学习笔记 01
  • Webpack4 学习笔记 - 01:webpack的安装和简单配置
  • 扫描识别控件Dynamic Web TWAIN v12.2发布,改进SSL证书
  • 想写好前端,先练好内功
  • 用jQuery怎么做到前后端分离
  • 国内开源镜像站点
  • #pragma预处理命令
  • #设计模式#4.6 Flyweight(享元) 对象结构型模式
  • (done) ROC曲线 和 AUC值 分别是什么?
  • (编程语言界的丐帮 C#).NET MD5 HASH 哈希 加密 与JAVA 互通
  • (二)斐波那契Fabonacci函数
  • (二开)Flink 修改源码拓展 SQL 语法
  • (附源码)springboot炼糖厂地磅全自动控制系统 毕业设计 341357
  • (全注解开发)学习Spring-MVC的第三天
  • (删)Java线程同步实现一:synchronzied和wait()/notify()
  • (十五)Flask覆写wsgi_app函数实现自定义中间件
  • (顺序)容器的好伴侣 --- 容器适配器
  • (算法)N皇后问题
  • (推荐)叮当——中文语音对话机器人
  • (一)使用Mybatis实现在student数据库中插入一个学生信息
  • .gitignore文件_Git:.gitignore
  • .net core 调用c dll_用C++生成一个简单的DLL文件VS2008
  • .NET 事件模型教程(二)
  • .Net小白的大学四年,内含面经
  • /etc/fstab 只读无法修改的解决办法
  • /etc/skel 目录作用
  • :not(:first-child)和:not(:last-child)的用法
  • @Autowired自动装配
  • @SuppressWarnings(unchecked)代码的作用
  • [BUUCTF NewStarCTF 2023 公开赛道] week4 crypto/pwn
  • [C/C++]关于C++11中的std::move和std::forward