git文件取消版本控制和撤销修改

1. 某个文件取消版本控制

IDEA中的.idea 文件夹是不需要提交到远程仓库的,如果在.gitignore 文件中没有指定忽略.idea 文件夹,已经提交了.idea ,此时在修改.gitignore 文件就没有作用了,因为.gitignore 是用来控制尚未被纳入版本控制的文件,如果文件已经存在于远程库中,自然也就无法生效了

  1. 使用 git rm -r --cached "要取消版本控制的文件或文件夹" 将本地的 .idea 文件夹取消版本控制
E:\ZHDSPEACE\pujiang-server>git rm -r --cached ".idea"
rm '.idea/libraries/Maven__io_springfox_springfox_swagger_ui_2_9_2.xml'
rm '.idea/libraries/Maven__io_swagger_swagger_annotations_1_5_21.xml'
......
  1. git commit git push 提交修改
  2. .gitignore 文件中添加忽略.idea 文件夹,并提交到远程仓库
.idea/

2. 撤销工作区、暂存区、本地仓库修改

2.1 撤销工作区(本地)修改

此时未将修改的文件git add
丢弃工作区的修改,并用最近一次的commit内容还原到当前工作区,只针对文件内容的修改,添加和删除文件不起作用

//放弃修改某个文件
git restore 

git restore .gitignore

//放弃所有修改的文件
git restore .  

可能有的同学使用git checkout -- filename来 恢复工作区的文件,但是我总感觉git checkout命令既被用来切换分支,又被用来恢复工作区文件,刚开始使用时很是迷惑。
这俩个命令针对文件可以完成相同的操作,所以我使用的是git restore

2.1 撤销暂存区修改

已经使用git add
这里只是从暂存区撤销了文件,但是文件的修改内容并没有被撤销。
方式一

git restore --stage 

git restore --stage .gitignore
git restore --stage "*.txt"

方式二

git reset HEAD  
git reset HEAD .gitignore

2.3 撤销本地仓库修改

已经git commit

//回退到上一次commit的状态,丢弃工作区的修改
git reset --hard HEAD^ 

//撤销commit和add 但是保存工作区修改
git reset --mixed HEAD^

//撤销commit 不撤销add 保留工作区修改
git reset --soft HEAD^ 

3. HEAD说明

HEAD 表示当前版本
HEAD^ 上一个版本
HEAD^^ 上上一个版本
HEAD^^^ 上上上一个版本
也可以使用 ~数字表示
HEAD~0 表示当前版本
HEAD~1 上一个版本
HEAD^2 上上一个版本
HEAD^3 上上上一个版本

回滚到具体的某个版本
git reset --hard <版本号>

你可能感兴趣的:(git,git)