Git学习笔记(三)

1.撤销修改

对于平时我们编辑文件,修改后肯定会有时候发现自己修改错了,所以Git提供了一个撤销修改的命令:

$ git checkout -- file

这个命令可以让我们丢弃工作区的修改,
如:

$ git checkout -- test.txt 

这个的意思就是把test.txt文件在工作区的修改。
撤销工作区的修改符合就近原则:

工作区 < - 缓冲区 <- 版本库

撤销工作区修改,如果缓冲区有该文件,则checkout – file 会将缓冲区的内容覆盖到工作区,此时工作区和缓冲区文件内容相同,因此工作区是干净的,并没有未add的文件。

撤销工作区修改,如果缓冲区没有该文件,则checkout – file命令会继续向上找,找到版本库中的该文件,此时使用版本库中的文件覆盖工作区,工作区不干净,因为有未提交的文件(从版本库中覆盖修改的文件)。

假如现在你没有提交commit,但是已经git add加入到了暂存区,当你的文件需要撤销时,这时Git提供了一个命令

git reset HEAD file 

Git同样告诉我们,用命令git reset HEAD file可以把暂存区的修改撤销掉

撤销缓冲区

撤销缓冲区,使用git rest HEAD – file ,则会将缓冲区的内容回退到工作区,此时缓冲区被该文件被移除,工作区不干净,有未add的文件(从缓冲区移除了,状态就变成了未add)

对于文件test.txt

① 修改后 未add(添加到暂存区) 需要撤销修改时:
git checkout – test.txt 或 手动删除工作区修改
工作区 : clean 暂存区: clean
② 修改后 add了(未commit) 再次修改文件 要撤销第二次修改时:
git checkout – test.txt (将暂存区恢复到工作区)
暂存区有第一次的修改需要commit
③ 修改后 add了(未commit),需要撤销修改时:
git reset HEAD test.txt (将暂存区修改删除)
此时工作区的修改还未撤销
git checkout – test.txt (撤销工作区修改)
④ 修改后 add并commit了,需要撤销修改时:
git reset –hard HEAD^ (版本回退)**

2.删除文件

在Git中,我们当然可以进行删除文件的操作,这里的删除文件和linux一样,使用命令

$ rm file

这样就可以删除文件了。
但是,这样删除了文件就会出现一个问题,版本库变化了,工作区和版本库就变得不一样了,所以我们接下来要做的就是让两个地方变的全部都一样。

现在你就有了两个选择:
一个是使用$ git rm file删除版本库中的文件,并且要记得git commit

当然,正所谓学以致用,当我们如果删错了工作区的文件,那么我们也可以有办法进行恢复了,因为版本库还是有这个文件的的,这个时候我们只需要命令

$ git checkout -- file

git checkout其实是用版本库里的版本替换工作区的版本,无论删除修改都可以用这个替换。

小结:
git checkout -- file恢复的是已经添加到stage的内容;

git rm删除的就是stage的内容;
git reset HEAD -- file会从master中将被删的stage的内容拷贝过去;

如果你使用了git rm之后接着使用 git commit -m “remove file”
则会删除master里的内容;

利用git reset --hard HEAD^可以将删除的master从回收站恢复过来;
然后利用git reset HEAD -- file 从master中拷贝到stage中;
最后再用git checkout -- file 从stage中拷贝到工作目录中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值