如何处理“git pull”命令删除的文件

1. 前言

在使用 Git 进行版本控制工作时, git pull 命令是我们常用的命令之一。然而,有时我们可能会误操作或者不小心删除了某些文件,在使用 git pull 命令后,这些文件也会被从本地仓库中删除,那么,这个时候,我们该如何处理这些被删除的文件呢?

2. 查看删除记录

2.1 Git 的状态检查

在使用 git pull 命令后,如果有文件被删除,Git 会记录这个删除操作。我们可以使用 git status 命令来查看 Git 的状态检查。当我们执行此操作后,Git 会显示出当前仓库的状态以及与上一次提交的区别。

git status

执行上述命令后,将会显示如下图的状态信息:

On branch master

Your branch is up-to-date with 'origin/master'.

Changes not staged for commit:

(use "git add<file>..." to update what will be committed)

(use "git checkout --<file>..." to discard changes in working directory)

deleted: deleted_file.txt

no changes added to commit (use "git add" and/or "git commit -a")

可以看到,根据 Git 显示的状态信息,我们可以知道哪个文件被删除了。此时,Git 会将被删除的文件列在 “delected” 后面,例如上面的例子中的 “deleted_file.txt” 文件。

2.2 查看提交记录

Git 会记录每个提交的操作记录。所以,如果你误删了某一个文件,你可以通过查看之前提交的记录来找到这个文件。

git log --summary

上述命令将会列出之前的提交和它们的摘要,提交日志历史和更改摘要。每个提交都会列出它的 SHA-1 校验和,提交者,日期,提交消息和更改总结。

我们可以通过查看提交记录来找到我们想要恢复的文件。例如,如果你想找到一个之前已删除的文件,你可以查看最新的提交,那些未被删除的文件就是需要恢复的文件。

3. 恢复删除的文件

3.1 通过Git来恢复

当你找到了之前被删除的文件后,你可以使用 git checkout 命令来恢复它们。

git checkout <file>

上述命令中的 <file> 表示你要恢复的文件名。恢复后,你将在仓库中看到这个文件。

3.2 通过版本来恢复

另一种恢复被删除的文件的方法是使用版本控制。如果你之前要删除文件的某个版本,那么你可以使用这个版本来恢复被删除的文件。

首先,我们需要列出可恢复的文件的列表:

git log --name-status --oneline

然后,我们需要查找到我们想要恢复的文件所在的版本号:

commit eaa9e9a

Author: Jingru

Date: Mon Dec 25 10:07:00 2022 +0800

Added file.txt

A file.txt

commit 5446a2d

Author: Jingru

Date: Sat Dec 23 15:14:00 2022 +0800

Initial commit

A README.md

在上面的示例中,我们希望恢复的文件名为 “file.txt”。在此版本控制下,文件是在提交 eaa9e9a 中添加的,所以我们将使用这个版本来恢复文件。使用以下命令来回退到之前的版本号:

git checkout eaa9e9a -- file.txt

这个命令将会从 eaa9e9a 版本中恢复丢失的文件。Git 使用 -- 代表文件名,这是提醒 Git 的版本管理,我们现在所在的文件名是 “file.txt”

4. 总结

在 Git 中,我们可以使用状态检查和提交记录来查找被误删除的文件。如果我们成功地找到了被删除的文件,我们可以使用 Git checkout 或者版本控制来恢复这些文件。

强烈建议在修改之前首先创建一个备份文件,以防止误操作而导致不需要的损失。