使用git对文件进行管理修改,撤销修改,删除操作

管理修改

1. cd testgit ---> git init ---> 创建一个doc1.txt文件并写入内容 ---> git add doc1.txt ---> 修改doc1.txt---> git status查看工作区 状态,显示有文件修改,这都符合预期


2.再commit后,git status查看状态。


3. 咦,为啥工作区不是“干净的”,怎么还有modified,不是都是commit到master分支了吗?原来,我第二次修改文件后,没有git add doc1.txt,所以没有将第二次修改的文件提交到暂存区(stage),而commit只负责将暂存区的修改提交到分支。提交后,用 git diff HEAD -- doc1.txt 命令可以查看工作区和版本库里面最新版本的区别(准确的说是工作区和版本库里的分支上的最新版本的区别):

4. 好了,知道了原因,那就好办了,只要再 add 一次就好了。好了工作区就回到“干净”的了。为啥我的截屏会显示一个qq呢?


撤销修改

1. 还是以doc1.txt文件进行操作。假装你正在练习英语,一不小心输入了中文。于是,你想删除这些中文。当然,你可以直接手动删除(em,这样你就不用看下去啦!)。


于是,我使用万能的git status,发现提示 git checkout --<file> ,嗯,就是他,可以丢弃掉用户在工作区的修改

这里有两种情况

<1> 如果用户修改的文件,还没有add到stage,那么就恢复到与版本库一样的状态

<2> 如果用户在add后又修改了文件,那么就恢复到用户刚刚提交到stage时的状态

总之,上面2种情况就是恢复到最近一次git commit 或者 git add的状态

2. 有人会想,如果我修改了文件,也add 到 stage了,还能通过git checkout恢复吗?em?谁知道呢,那就用git status看下吧。


从返回结果看,已经不能用 git checkout <file>。当然,还是有办法恢复的。可以先用命令git reset HEAD file把暂存区的修改撤销,重新放回工作区。


好啦,这样就能通过checkout恢复了


终于,您的工作区又干净

删除文件

1. 对于git来说,删除也是一个修改,如果新建一个文件,删除的话直接rm就可以了。这是因为:你删除了文件就相当于你的工作区没有发生改变,同时这个文件在你的版本库也没有记录,所以git status是检测不到状态的。


但是,如果删除的文件,在git的版本库里有记录,那么你直接rm删除,git就会监测到你的工作区和版本库已经发生变化了,看下图(还是操作doc1.txt来判断)


从万能的git status可以看出,你有2个选择。

<1> 你确实想要删除这个文件,先 git add/rm doc1.txt 然后commit给分支,这样就完成了


<2> 如果,你开始 rm 操作是手误所致,想要恢复,那么就可以用checkout恢复


好的,你的文件又回来了

发现,git checkout --<file> 对于文件的修改和删除都能恢复啊。

猜你喜欢

转载自blog.csdn.net/qq_34964399/article/details/79877385
今日推荐