git 撤销修改

只修改了文件,回到当前快照的初始状态

比如,我们拿到a.txt文件里面的内容为:
1
我们对其进行更改,内容改为:
12
我们想回到我们修改之前的状态,这个时候使用
git reset HEAD --hard HEAD参数是本次提交的快照,--hard指版本库(HEAD指向的节点),暂存区,工作区三者都回到快照节点(HEAD所指)的状态
git reset master --hard 因为HEAD指向了master分支指针,所以可以直接填分支名
git reset nodename --hard 更本质的做法是直接写本次快照的节点id

如果只想恢复单个文件,使用在reset后加上文件名即可。

add暂存库之后,想从暂存库删除,但是工作区保留修改

比如,我们拿到a.txt文件里面的内容为:
1
我们对其进行更改,内容改为:
12
这时我们执行add命令,提示modified: a.txt,我们此时想撤回add的操作。

命令描述
git reset HEAD --mixed--mixed 参数是将版本库,暂存区回到快照节点,工作区保持修改的状态
git reset HEAD--mixed是默认参数
git resetHEAD也是默认参数,回到本次快照节点的状态
git reset filename回到当前快照节点
git rm --cached filenamereset filename一样,而且文件会被标注为untracked,也就是说执行了reset并且执行了·rm
commit之后想从新本次提交

1.只修改提交的信息
直接执行git commit amend
2.修改文件内容或者增加文件
1)首先执行 git add ./将想要添加的内容提交到暂存区

2)然后执行git commit --amend修改提交的内容

3.删除某些文件
假设我们修改了a.txt并增加了b.txt。

Changes to be committed:
        modified:   a.txt
        new file:   b.txt

执行执行commit命令,我们想删除掉b.txt从新提交。

此时只需要提交b.txt意外的文件,不要提交b.txt文件即可
下面的代码是错误示范,提交后不能使用reset来重置缓存区

我们要删除掉暂存区的b.txt。
命令|描述
--|--
`git reset filename`|从暂存区删除,继续最终,b.txt作为下次提交
`git rm --cached filename`|从暂存区删除,并且不追踪,但保留工作区的b.txt,我们可以手动删除
`git rm --cached filename`|从暂存区删除,并且不追踪,并且删除工作区的b.txt

如果有大量的文件,则建议先执行`git reset`将暂存区全部清空,然后再手动添加想要提交的文件。

2)然后执行git commit --amend命令重新提交

错误操作:
对于想要删除提交的文件,我们很容易想到的是手动删除,然后执行add,但是这并没有对暂存区的内容进行修改,所以提交的内容还是一样,这时一个大坑。一定要理解工作区,暂存区和仓库区三者的概念。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值