git的三种状态转换及忽略某些文件不提交
使用git status可以查看文件的状态,一般有3种状态:
1、Untracked files
即未跟踪的状态,这是文件的初始状态,也就是在工作区中的状态,就是说git不知道你这个文件的信息,没有生成快照
2、Changes to be committed
即文件在暂存区中生成了快照等待被提交(commit)
3、Changes not staged for commit
即文件生成过快照,但是又有了新的修改,并且没有生成新的快照
一、状态转换:
1)Untracked files --> Changes to be committed
使用:git add 文件名 或者 git add .
含义:将工作区的某个文件、某些文件、或者是所有文件,所作出的修改(新建、删除也算的),添加至暂存区,此时文件就可以被git commit了。
2)Changes to be committed --> Untracked files
使用:git rm --cached 文件名
含义:将文件从暂存状态转换为未暂存状态
3)Changes to be committed --> Changes not staged for commit
使用:当某个文件已经git add过了,此时如果再进行修改,使用git status查看文件状态的时候,就处于Changes not staged for commit,意思是修改的部分没有生成快照,不能提交。
二、忽略某些文件或文件夹
1、打开git bash,新建.gitignore文件
touch .gitignore
2、notepad++打开.gitignore文件,添加上要忽略的文件或文件夹,如:
注意:一定是Untracked files才能被忽略,如果不是该状态,需先转换到该状态
三、撤销
1、场景:将该文件在工作区中的修改,全部撤销,返回到最近一次git commit或者git add时的状态
git checkout -- 文件名
1)如果,文件没有被git add过,即没有生成过快照,那么使用此命令就撤销到了和版本库一致的状态了
2)如果,文件被git add过后,又修改了,即曾经生成过快照,那么使用此命令撤销到之前git add后的暂存区时的状态。
2、场景:撤销暂存区的修改,将文件重新放回工作区
git reset HEAD 文件名
git reset既可以用在版本回退,也可以用在撤销暂存区的修改,将文件重新放回工作区,HEAD代表此前的最新版本;
接下来就可以使用1)中的方法,将工作区中的修改撤销了。
3、提交到本地分支上的回退
如果,修改的文件已经使用了git commit提交到了本地分支,那么可以采用版本回退,回到之前的版本
1)使用,git reset --hard HEAD^回退到上一个版本(HEAD为当前版本、HEAD^为上一个版本、HEAD^^为上上个版本,以此类推)。
2)或者使用 git log --pretty=online 查看版本号记录
git reset --hard 版本号
4、提交到远程分支,就只能强行覆盖了,要么是远程分支覆盖本地、要么是本地覆盖远程
远程分支覆盖本地:https://blog.csdn.net/qq_36898043/article/details/81449752
本地覆盖远程不推荐使用,一般是回滚到之前的commit历史记录,然后再push到远程分支