目录导航
一:忽略提交文件的两种方式
忽略提交文件有两种方式:
第一种没有添加到版本库!
第二种已经添加到版本库,但是现在不想再提交的!
一、文件没有添加到版本库中
ignore specified file:忽略指定的文件
ignore all files under:忽略文件夹
ignore all files matching:忽略所有匹配的文件(某一类文件)
根据需要选择需要忽略的文件或者文件夹,直接添加进去就可以忽略提交!
二、文件已经纳入版本库
第一步:按照上图步骤添加一个忽略文件夹
第二步:把不想提交的文件直接拖进该文件夹即可!
提示:如何把忽略的文件提交呐
第一种:可以在Version Control中直接把需要提交的文件拖出来
第二种:分次提交,先提交默认的,然后再提交忽略的文件
在changelist中可以选择是提交默认还是自己设置的忽略文件夹!
忽略提交文件今天发现了新大陆,做一下笔记:
这个是在你提交页面发现有自己不想提交的文件,这个时候可以直接点击Move to Another Changelist如果只有当前一个列表idea会提示你新建一个文件夹,如果你已经新建了忽略文件夹,直接点击然后文件忽略了,其实也不能叫忽略,只是把你不提交的文件换了文件夹,而只提交你当前所在的文件夹!仅此而已!!!!!
二:idea设置git忽略文件
- 在使用IntelliJ IDEA这个集成开发工具进行开发时,我们会用到git等代码版本管理工具将代码push到远程仓库,IntelliJ IDEA有自带的git,当然我们也可以自己安装好了,在IntelliJ IDEA中进行配置。git本身是支持通过编辑.gitignore文件去忽略一些不想提交的文件的,如果项目工程代码中没有编辑.gitignore文件,那么IntelliJ IDEA会默认把当前本地和远程不一致的文件都列出来,事实上像后缀名是.iml, .idea,target 等文件是不需要提交的,如果每次都手动忽略的话会非常辛苦,而且可能不小心给提交了,回滚也麻烦,因此小编为大家介绍idea设置git忽略文件的方法,下面跟着小编一起学习吧。(第一次全局设置后以后就不用再担心啦!)
- IntelliJ IDEA设置文件自动忽略后,以后提交代码就会自动忽略.iml, .idea,target 文件夹等这些文件,该设置仅需设置一次即可,以后无论多少个项目都可以自动忽略该项目下面的这些文件。如下图所示,我们点击File --> Settings -->Editor --> File Types进行设置。
三:如何在IntelliJ IDEA中使用.ignore插件忽略不必要提交的文件
先来看下如何安装。点击File->Settings
使用:
在项目上右键->New ->.ignore file ->.gitignore file(Git)
先选择Example user template好了,以后有什么想过滤的可以自行添加,~最后点击Generate生成
然后就会发现被忽略的文件名变成了灰色有木有啊!又可以愉快的提交代码了~
也可以右键文件将其加入忽略的名单中
四:idea 把一个add到git的文件去掉
(比如你有很多个add了的文件,但是没有commit,都会使用这种方式都会回到等待add
,但是使用git rm --cached 可以针对某个文件?)
当你用idea把误把一个文件add到git后,想把这个文件去掉(也就是从git管理中去掉,commit时不把这个文件提交)的话,可以用下面的方法:
这方法就等于:git reset head
这个命令就是把本地仓库的文件,替换Stage区里相应的文件(工作区,就是你的文件目录,不受影响)
在网上看到还一个命令,就是: "git rm --cached " 。这个命令会直接从暂存区删除文件,工作区则不做出改变。(还没有测试过)
这么看来"git rm --cached "命令比"git reset head"更适合文章主题,前者是删除掉,后者是替换掉。
五:IDEA 撤销 commit
日常工作中会遇到 commit 到本地仓库的代码,因为一些原因,需要撤销后在提交到本地,或者需要整合多次 commit,然后 push 到远程仓库。下面是 IDEA 支持的快捷方式。
(和上面第一点的的加入到版本库,忽略提交对比!)
- Undo Commit
- 可以在 Version Control 查看到刚刚撤销的内容
六: idea中git回退本地仓库版本
介绍下Reset Head中三种Reset Type类型:
1.Mixed(默认):它回退到某个版本,本地会保留源码,回退commit和index信息,若要提交重新commit。
2.soft: 回退到某个版本,只回退了commit的信息,不会恢复到index file一级,若要提交重新commit。
3.Hard:彻底回退到某个版本,本地的源码也会变为上一个版本的内容。
操作如下:
拿ConfigServerApplication类中的fun() 方法来验证,每次提交修改方法中的数据,目前本地仓库的记录是10,远程仓库的记录是8,如下:
现回退到9,记录9的version number:d7c653bdbd25c530aba6ad8c202048487b54a0ab
选择Reset Head:
Reset Type:选择默认的Mixed(相当于第四点:idea 把一个add到git的文件去掉)
To Commit:输入刚才记录的9的version number
点击Reset
commit记录回退到了9,本地记录还是10,这时可重新commit到本地仓库或revert还原到本地仓库的记录。push时只有记录9.
若Reset Type:选择Hard,如下:
本地和commit记录都会回退,点击Reset后如下:
总结
第一种情况:
刚新建的文件,还没有add,不想把文件add纳入版本管理:
- 在setting设置file type;
- 使用.gitignore,这种方式比较灵活,可以自由选择
- 在version control的local changes选择unversioned file右键ignore的文件
第二种情况:
已经add,想要回到新建状态,不想纳入版本管理,即第一种:
- 在控制台下,进入到对应文件目录,使用命令:git rm --cached
- 右键git>>repository>>reset head 选择 默认mixed head即可,这里to commit就是默认的head
- 在version control的local changes右键new changelist,然后把不想要的文件add 加入到这个changelist;这种实际上只是放到另外一个changeslist,提交的时候提交默认的changeslist
第三种情况:
已经commit,想要撤销commit:
这里分想要撤销comiit的提交历史,还有另一种是提交历史和代码也对应撤销:
- 仅仅想撤销commit提交历史,合并多次commit:
- 在version control右键 undo commit即可撤销commit,代码不会回退
- 这里使用git rm --cached f也可以,但是commit的历史还会存在,直接回到了待add状态,好像这个时候再次add,然后直接commit里面是看不到这个文件了,直接帮我们comiit了?(不太推荐)
- 使用第二种情况的 右键git>>repository>>reset head 选择 默认mixed,
然后to commit里面 想撤销一次就写head~1,多次就写对应数字 head~ 3,也可以指定版本的id
(注意第二种情况的git reset head里面是head,没有任何数字!)
这里解释一下几个参数:
–mixed
意思是:不删除工作空间改动代码,撤销commit,并且撤销git add . 操作
这个为默认参数,git reset --mixed HEAD^ 和 git reset HEAD^ 效果是一样的。
–soft
不删除工作空间改动代码,撤销commit,不撤销git add .
–hard(这个特别注意:代码也会回滚)
删除工作空间改动代码,撤销commit,撤销git add .
注意完成这个操作后,就恢复到了上一次的commit状态。
顺便说一下,如果commit注释写错了,只是想改一下注释,只需要
git commit --amend
此时会进入默认vim编辑器,修改注释完毕后保存就好了。
2. 提交历史和代码都要回退,选择git reset --hard head~1
(和git reset current branch 回退版本一样!)
参考文章:
https://blog.csdn.net/hotdust/article/details/52994203
https://www.cnblogs.com/gexiaoshan/p/10184815.html
https://blog.csdn.net/w893932747/article/details/80623795
https://www.jb51.net/article/128274.htm
https://jingyan.baidu.com/article/3a2f7c2ef5b2c926afd6111b.html
https://blog.csdn.net/w958796636/article/details/53611133