美文网首页
Git详细教程(七)删除文件

Git详细教程(七)删除文件

作者: 无关风月oo | 来源:发表于2018-01-14 03:14 被阅读0次

我们前面说过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 来恢复到最新版的文件。

相关文章

网友评论

      本文标题:Git详细教程(七)删除文件

      本文链接:https://www.haomeiwen.com/subject/mjahoxtx.html