我们前面说过Git其实做的是管理并跟踪修改。
我们先看一下目前的工作区:
$ cd softdata/Git-reporsitory/
$ ls -ah
. .. .git readme.txt
通常我们删除文件有两种方式:
- 在finder中找到工作区的文件然后删除;
- 使用
rm readme.txt
命令删除文件;
$ rm readme.txt
$ ls -ah
. .. .git
你对文件的操作都会被Git记录,此时我们也知道工作区和版本库的内容是不一样的。我们使用git status
来看一下:
$ git status
On branch master
Changes not staged for commit:
(use "git add/rm <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
deleted: readme.txt
no changes added to commit (use "git add" and/or "git commit -a")
可以看到工作区的文件已被删除,但是现在有以下几种情况:
- 一、你的确想删除从版本库删除readme.txt,那么可以直接使用
git rm
然后git commit
:
$ git rm readme.txt
rm 'readme.txt'
$ git commit -m "delete readme.txt"
[master 7e55805] delete readme.txt
1 file changed, 1 deletion(-)
delete mode 100644 readme.txt
好了,现在版本库里面的也删掉了。
- 二、第二种情况就是你又后悔了,删错了,那么其实你可以从版本库恢复回来,毕竟版本库的还在,这时我们再次使用
git checkout
命令:
-- 我们刚刚从版本库已经删除了该文件,为了演示我已使用之前我们在版本回退中学到的git reset --hard HEAD^ 恢复,现在继续回到前面说的那步:
$ rm readme.txt
$ git status
On branch master
Changes not staged for commit:
(use "git add/rm <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
-- 再次提示我们:可以使用git checkout -- <file> 来放弃对工作区的改变
deleted: readme.txt
no changes added to commit (use "git add" and/or "git commit -a")
$ git checkout -- readme.txt
$ ls
readme.txt
灵活运用前面学习过的知识很重要,这也说明我们必须打好每一步的基础,尽量每次学习后不要留下任何疑虑,如果有疑虑自己多看看前面学习过的知识,也查查其他相关但知识,多加实践与思考。
小结
1.git rm
用于删除文件。
2.使用 git checkout -- <file>
来放弃对工作区文件的删除或修改;
3.如果你已经提交到了版本库,也没关系可以用git reset --hard HEAD
来恢复到最新版的文件。
网友评论