返回介绍

file operate

发布于 2024-06-16 10:29:35 字数 2128 浏览 0 评论 0 收藏 0

删除未添加文件

直接在工作区删除这文件,会如何呢?

$ rm *.txt

通过下面的命令,可以看到在暂存区(版本库)中的文件仍然存在,并未删除。

$ git ls-fles

从文件的状态来看,文件只是在本地进行了删除,尚未添加到暂存区(提交任务)中。也就是说:直接在工作区删除,对暂存区和版本库没有任何影响。

$ 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)
...

rm 命令只能删除工作区的文件,对缓存区和版本库中的文件没有影响,这很好理解,rm 是系统软件,就是删除指定的文件,对其他目录下的文件不会进行关联删除。 想要将文件和缓存区的命令一同删除,可以使 git 的内部 rm 自命令。

执行 git rm 命令删除 ADD 过的文件

git rm 不能删除未跟踪的文件。还是需要用系统的 rm 指令。

$ git rm -- <file>

按照上面状态输出的内容,将所有的文本文件删除。执行下面的命令:

$ git rm <filename1, filename2, ....>

$ git status

$ git commit -m ...

删除动作加入了暂存区。这时执行提交动作,就从真正意义上执行了文件删除。文件只是在最新的提交中被删除了,并没有改变历史版本。可以通过下面的命令查看历史版本中的文件。

$ git ls-files --with-tree=HEAD^

也可以查看历史版本中文件的内容

$ git cat-file -p HEAD^:welcome.txt

查看文件

查看工作区的文件

ls

查看缓存区的文件

git ls-files

删除本地多余的目录和文件,可以使用 git clean 命令。先来测试运行以便看看哪些文件和目录会被删除,以免造成误删。

$ git clean -nd

Would remove a/

真正开始强制删除多余的目录和文件。

$ git clean -fd

Removing a/

整个世界清净了。

$ git status -S

文件的恢复

对不想删除的文件执行 git checkout -- ,可以让文件在工作区重现。

恢复工作区中的文件,注意会覆盖工作区中的更改,并且没有任何提示,这是很危险的操作,会让修改的内容丢失。除非确认文件的内容更改是无用的,才会执行覆盖操作。

git checkout -- <files>

或者

git cat-file -p HEAD~1:<file>  >  <file>

或者使用 show 命名

git show HEAD~1:welcome.txt > welcome.txt

等同于

git checkout HEAD -- welcome.txt

移动文件

git 拥有强大的文件对比追踪能力,无论是重命名还是删除后从新恢复,都能追踪到,甚至改变了少量文件的内容。甚至在提交时还会显示文件的相似度。 除了系统的 mv 指令外,还有 git 带的 mv 自命令可以用。mv 子命令同样会将缓存区一同更改。

git mv <origin_name> <target_name>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文