git数据撤销、回滚命令
我们在提交项目到github或者gitLab要经过以下几个步骤
$ git add . //命令执行的文件夹下的所有文件
$ git add test1.txt //单个文件
$ git add test2 //文件夹以及文件夹里面的所有文件,test2 是一个文件夹,命令的执行要切换到test2文件夹所在的目录
$ git commit -m '提交文件'
$ git pull //拉取远程代码,保持自己的代码与远程代码一致
$ git push
git add 之前
git add
之前文件是在本地工作区
也就是磁盘区
如果我们只是在编辑器里修改了文件,但还没有执行git add .
,这时候我们的文件还在工作区,并没有进入暂存区,我们可以用:
$ rm filename.txt //本地删除filename文件
$ git checkout . //撤销该文件夹下所有文件的修改
或者
$ git reset --hard . //撤销该文件夹下所有文件的修改
来进行撤销操作。
git add之后、git commit之前
git add
命令之后,添加到文件到暂存区
$ rm filename.txt/test //工作区和暂存区的相应内容都删除
$ git rm --cache filename.txt //删除暂存区的filename文件,本地的保持不变
$ git rm --cache test //删除暂存区的test文件夹,text是一个文件夹的名字
git commit之后、git push之前
1、整体回滚数据(git reset)
如果仅仅是git commit
的注释写错了或者忘记提交某个文件了,添加忘记提交的文件后,使用以下命令:
$ git commit --amend
命令执行完之后,会进入vim编辑器,写入要提交的注释可以啦~
最终你只会有一个提交 ,第二次提交将代替第一次提交的结果。
例如:
$ git commit -m 'initial commit'
$ git add forgotten_file
$ git commit --amend
$ git reset --mixed HEAD^
$ git reset --mixed 版本号
等同于
$ git reset HEAD^
$ git reset 版本号
含义是:撤销git commit 操作和git add 操作,但是不删除工作区间改动的代码。
--mixed是默认参数可以省略
$ git reset --soft HEAD^
$ git reset --soft 版本号
撤销git commit 操作,不撤销git add操作,不删除工作区间改动的代码
$ git reset --hard HEAD^
$ git reset --hard 版本号
撤销git commit 操作和git add 操作 并且删除工作空间改动的代码。
执行这行代码之后,就恢复到了上一次git commit之后的状态
git reset --hard HEAD~<number>
number默认为1,表示回退到之前的第一个版本
HEAD^
的意思是上一个版本,也可以写成HEAD~1
;如果进行了两次commit ,想要撤回到两次commit,可以使用HEAD~2
版本号
可以使用 git log
或者 git log --oneline
命令查看,命令执行之后可以回退到某个版本,回退之前的数据会消失。
2、回滚某个文件
$ git log –pretty=oneline <file> //可以查看某个文件的修改历史。
$ git show commit_id <file> //可以查看对应某个commit时期file的内容。
$ git reset commit_id <file> //可以将file回退到某个版本
git push 之后
git rm -r --cached test/a.txt // 删除test文件夹下的a.txt文件,加入到删除缓存中 ,-r 是递归的意思
git commit -m '删除test文件夹下的a.txt文件' // 执行删除缓存,提交文字为“删除test文件夹下的a.txt文件”
git rm -r --cached test // 删除test文件夹,加入到删除缓存中
git commit -m '删除test文件夹' // 执行删除缓存,提交文字为“删除test文件夹”
git push // 推送操作到远程仓库