目录
一: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,最终界面是一样的
编辑