在用IDEA使用Git前,我们需要先配置Git忽略文件。对于Jetbrains和Eclipse等软件,总会多多少少带有一点非程序员自己造的代码文件,如下图的.xml、.iml,我们在git commit时不想理会这些文件,就要配置Git忽略文件
为什么要忽略他们?
答:与项目的实际功能无关,不参与服务器上部署运行。把它们忽略掉能够屏蔽IDE工具之间的差异。
怎么忽略?
答:创建忽略规则文件 xxxx.ignore(前缀名随便起,建议是git.ignore)。这个文件的存放位置原则上在哪里都可以,为了便于让~/.gitconfig 文件引用,建议也放在用户家目录下(C:\User\iris\),完整代码如下。
# 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
有了忽略文件,你还需要让Git引用忽略文件
在*.gitconfig里加入如下代码:
[core]
excludesfile = C:/Users/iris/git.ignore
1.2 在IDEA中添加系统里的Git.Exe到IDEA里
选好git.exe后,test下,看到git version无误后,即可。
1.3 IDEA里玩Git
刚创建的项目是没有git init过的,咱不用git bash初始化,low了。点击VCS(Version Control Setting) - Import into Version Control - Create Git Repository,随后它会让你选择对哪个文件夹git init
初始化完成后你就可以看见.git文件夹了。pom.xml还变红了,要知道git里红色代表文件未追踪(git add),说明Git接管了这个文件夹。
两种方法来git add,法一:
发现它变成未commit的绿色状态了:
在此总结工作区的文件的颜色涵义: 绿色——已追踪暂未提交; 红色——未追踪;自己建立新文件后就是红色的,出现红色的一定要Add到git中,不然不能上传到远程仓库 蓝色——已追踪,之前提交了,但是后来改动后未提交; 白色——已追踪,已提交,无改动; 灰色——版本控制已忽略文件,即不受git控制的文件; 黄色——受git控制,被git忽略,不跟踪。 附:合并代码时不同颜色区块的含义: 灰色:删除 蓝色:改变 绿色:新增 红色:冲突
接着我们新建一个java文件,弹窗提示是否将该文件git add到暂存区,如果选择cancel也没事,稍后我们手动git add即可:
如果对文件夹git add,可能提示以下信息(该文件夹下可能包含git忽略文件,你想强制git add它们吗?)选择cancel:
当我们对文件夹git add后再右键 - git - commit directory ...,弹窗左上角显示的是暂存区的所有文件,对比工作区你会发现没有.idea文件夹及其包含的忽略文件:
你可以在Commit Message框里填写日志信息,Your version框里显示你提交的代码。等commit完后文件恢复正常的颜色,比如黑色,我的皮肤里显示的是白色。
接着我给文件新增一行代码,add 后commit,IDEA很贴心,显示了a9d202c版本号时的代码和当前版本的代码,并用绿色圈出变化区域:
其实IDEA比git bash自由点,比方说,git add真实含义是追踪而非添加到暂存区,对于已经追踪过的文件,IDEA支持下次修改其代码,未经git add即可直接commit,因为该文件已经追踪过了。
如何git branch -v呢?:IDEA左下角有个按钮,叫git / version control,点开后看log栏
如图,点击最新的commit记录,右下角表示黄色标签标记了HEAD指向哪个分支,在此指向master分支,绿色标签标记了master指向哪次commit(哪个版本),在此指向third commit。
如何git checkout 呢?
选中版本号右键 - checkout Reversion
切换前我的GitTest.java文件原本是三行System的,切换后v3时期写的第三行不见了:
1.4 IDEA里创建分支
法一:对项目文件夹右键 - git - branches - new branch:
法二:在IDEA右下角显示当前所处分支master,点他:
1.5 IDEA里切换分支
1.6 IDEA里合并分支
正常合并
去hot-fix分支,新增一行代码"hello git4"并commit,回master分支,此时git - log栏显示hot-fix在hot-fix commit1版本,master在third commit版本:
我们站在master分支上,点击hot-fix分支 - Merge "hot-fix" into 'master',然后就合并成功啦
冲突合并
基于上述步骤,我们去hot-fix分支新增代码"hot-fix test"并commit,checkout master,新增代码"master test"并commit,点击hot-fix分支 - Merge "hot-fix" into 'master',弹窗选择Merge:
第一板块显示来自master的代码,第三板块显示来自hot-fix代码,中间板块既是不冲突的重合代码,也是直接Apply下的最终代码。分界处有X >>> <<< X,代表不要这串代码和将这串代码右移 / 左移至结果代码中。当弹窗如下就表示冲突都解决了:
直接Apply。现在看日志信息,两条线合并了,代表hot-fix commit2与master commit2和合并了:
1.7 IDEA集成Github
打开IDEA的Setting - Version Control - Github,如果没有Github,就是没安装插件,安装呗:
在Github界面点击+新增账号,点击—删除账号。国内网络是不容易用卡密登陆上的,可推荐用Token登录,毕竟可以控制Token过期时间和权限,Tokens获取:
Note:给口令起个名字,比如口令用途,下方的标签是权限,安全的话就拉满。生成口令后一定要复制留存,因为它只会显示一次,刷新后都不显示第二次。忘了就只能再造一个Token。
1.8 分享项目到Github
git bash里这部操作需要先到github建仓库再到git bash去push,IDEA自由度高,可一步到位:
下图分别是:远程库名字,设为私有仓库,git remote add 别名 地址,描述
附:git remote rm 别名 可删除别名
测试发现,建议开VPN时分享项目到github,不然上传代码失败,无论何种登陆方式。
1.9 Github已有远程库后Push至远程库
法一:对文件 / 文件夹右键-git-push;
法二:
push界面:
左上角意思是将本地库的master push至别名为git-test的远程库的master上,但是这个是别名默认等价于远程库的https连接,需要vpn,不如用ssh连接,先新建别名:
输入别名和ssh地址:
启用ssh地址:
现在push即可成功。
注意: push是将本地库代码推送到远程库,如果本地库代码跟远程库代码版本不一致,push的操作是会被拒绝的。也就是说,要想push成功,一定要保证本地库的版本比远程库的版本高!因此一个成熟的程序员在动手改本地代码之前,一定会先检查下远程库跟本地代码的区别!如果本地的代码版本已经落后,切记要先pull 拉取一下远程库的代码(所以每次push到远程库前不妨都pull下),将本地代码更新到最新以后,然后再修改,提交,推送!
1.10 Pull From 远程库以更新本地库
注意: pull是拉取远端仓库代码到本地,如果远程库代码和本地库代码不一致,会自动合并,如果自动合并失败,还会涉及到手动解决冲突的问题。
在Git - pull里即可pull from 远程库:
1.10 Pull和Clone有什么区别
clone”是在本地没有版本库时,将远程库整个下载到本地;而“pull”是在本地有版本库时,从远程库中获取最新commit数据,并合并到本地。“git pull”相当于“git fetch”加“git merge”。
通常情况下,远程操作的第一步,是使用git clone从远程主机克隆一个版本库到本地。本地修改代码后,每次从本地仓库push到远程仓库之前都要先进行git pull操作,保证push到远程仓库时没有版本冲突。
1.12 Clone From 远程库到本地
假设我们删库了,删了工作区git-demo。重启IDEA,选择:
非特殊说明,本博所有文章均为博主原创。
如若转载,请注明出处:https://www.ink0.cn/index.php/2023/02/03/4-idea%e9%9b%86%e6%88%90git/
共有 0 条评论