什么是Git,它能真正恢复已删除的文件吗?

云柯 680 7

观看Git从失败的成绩中拯救我!

这个del命令可能是一件可怕的事情。您可以在Windows命令提示符中使用它来删除文件。它们立即消失; 你甚至无法从回收站中检索它们。(Mac或Linux系统上的等效rm命令就是命令。)

让我演示给你看。首先,我将运行该dir命令来查看当前目录的内容:

C:\work>dir
09/10/2018  04:07 PM    <DIR>          .
09/10/2018  04:07 PM    <DIR>          ..
09/10/2018  04:07 PM            12,359 term_paper.txt
               1 File(s)         12,359 bytes

现在我将运行del命令删除该term_paper.txt文件。

C:\work\>del term_paper.txt

如果我dir再次运行,我们可以看到文件已经消失。

C:\work>dir
09/10/2018  04:09 PM    <DIR>          .
09/10/2018  04:09 PM    <DIR>          ..
               0 File(s)              0 bytes

......哦,废话。我需要在明天转过来。

什么是Git,它能真正恢复已删除的文件吗?

好的,不用担心。这就是我将文件保存在Git版本控制系统中的原因。我只是运行git status命令来检查我的文件的状态......

C:\work>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:    term_paper.txt

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

Git知道我有一个term_paper.txt文件,但它被删除了。它还说我可以运行命令git checkout -- <file>。让我们尝试使用该term_paper.txt文件。

C:\work>git checkout -- term_paper.txt

现在让我们再试一次dir列出目录内容......

C:\work>dir
09/10/2018  04:07 PM    <DIR>          .
09/10/2018  04:07 PM    <DIR>          ..
09/10/2018  04:07 PM            12,359 term_paper.txt
               1 File(s)         12,359 bytes

呼!危机避免了。该term_paper.txt文件又回来了!

我如何使用Git?

那么,Git如何才能为我删除已删除的文件?

Git是一个版本控制系统。它可以帮助您控制项目中不同版本的文件。它会跟踪文件随时间的所有更改。如果您要求,它可以重置任何文件的内容以匹配以前的版本。

项目文件的所有旧版本的集合称为Git 存储库。它基本上只是一个文件夹,您可以在其中编辑文件,然后运行Git命令来存储您的更改。您可以在计算机上安装多个Git存储库,每个存储库用于您正在处理的每个项目。

每次完成对项目的部分或全部文件的更改时,您都可以拍摄其当前内容的快照。此快照表示项目历史记录中您可能希望将来返回某个时间点的点。这些快照称为提交。正如您可能会使用电话号码并“将其提交到内存”以便以后记住它,您可以将项目文件的一个版本提交到Git存储库,以便稍后可以恢复该版本。

什么是Git,它能真正恢复已删除的文件吗?
Git存储库允许您保存每个文件的多个版本。

所有Git必须做的就是给我一个term_paper.txt我在之前的提交中记录的文件版本。

让我向您展示如何设置存储文件的Git存储库。

我使用该cd命令更改为项目目录,然后使用该命令初始化新存储库git init

C:\Users\jay>cd \work
C:\work>git init
Initialized empty Git repository in C:/work/.git/

与所有Git命令一样,git initgit可执行文件的名称开头,后跟空格。然后,我输入了我想要运行的子命令的名称,在这种情况下,或者,add或者。Git通过创建一个在其中命名的新子目录,在当前目录中初始化了一个存储库。commitinit.git

但此时,我的term_paper.txt文件尚未添加到存储库中。事实上,Git不知道它存在!

每个文件在Git存储库中都有三种状态。当您对文件进行更改时,它会被“修改”。您不一定要在下次提交时包含所有已修改的文件,因此您需要指定包含的文件。您可以通过向索引添加文件来执行此操作,通常称为“临时区域”或“缓存”。暂存区域是您放置要提交的文件的位置。您添加到索引中的文件称为“暂存”文件。当你已经上传了你想要的所有文件时,你做了一个提交,那就是文件实际被添加到你的Git存储库的时候。

什么是Git,它能真正恢复已删除的文件吗?
Git文件循环通过三种状态:“已修改”,“已暂存”和“已提交”。

然后,当您接下来对这些文件中的任何一个进行更改时,它们将再次被视为“已修改”。您可以再次暂存和提交文件以保存它们的新版本。循环重复。

所以,我有一个新的Git存储库,但实际上并没有。我运行git status命令来查找我的文件的状态。

C:\work>git status
On branch master

No commits yet

Untracked files:
  (use "git add <file>..." to include in what will be committed)

        term_paper.txt

nothing added to commit but untracked files present (use "git add" to track)

git status命令是查找当前状态的“go-to”命令,或“Git发生了什么”。它经常使用。

term_paper.txt在“未跟踪文件”列表中看到了我的文件。这些是Git尚未“跟踪”的文件 - 它没有跟踪它们的变化,所以我们没有保存它们的新版本。我还看到了一些鼓励我运行git add命令的有用消息。所以我做了…

C:\work>git add term_paper.txt

然后我又跑git status了......

C:\work>git status
On branch master

No commits yet

Changes to be committed:
  (use "git rm --cached <file>..." to unstage)

        new file:   term_paper.txt

term_paper.txt文件已移至新的“要提交的更改”部分,该部分列出了暂存区域中的文件。该文件已从“已修改”转换为“已暂存”。接下来,我需要将更改提交到存储库。我跑了git commit命令:

C:\work>git commit

这个启动nano,一个简单的文本编辑器,以便我可以编写提交消息。

什么是Git,它能真正恢复已删除的文件吗?
“git commit”命令启动文本编辑器,以便您可以编写提交消息。

在Git中,您需要提供一条消息来处理每个提交,一个简短的说明解释提交的内容。这些消息是使Git成为与其他开发人员协作的绝佳工具的众多功能之一。消息永久附加到repo历史记录中的提交。如果您的某个协作者将来看到提交并且不理解它,则提交消息将帮助他们弄明白。它可能也可以帮助弄清楚你自己的提交做了什么,如果它已经有6个月了。

所以我写了“添加术语纸”作为我的提交消息,保存了文件,退出了编辑器。Git将其作为完成提交的信号,并将其term_paper.txt与提交消息一起保存到repo中。Git打印了一些确认提交的输出:

C:\work>git commit
[master (root-commit) f67d974] Add term paper
 1 file changed, 1 insertion(+)
 create mode 100644 term_paper.txt

当我继续处理我的论文时,我偶尔会运行git add term_paper.txt以暂存该文件,然后git commit提交它的新版本。我知道,如果我做了一个我不喜欢的改变,我可以重置为该论文的先前版本。

其余的,你知道。我做了一个我不喜欢的最终改变:不小心删除了文件。但是因为我已经把它交给了回购,Git能够把文件带回来!

但等等,还有更多!

很酷,对吗?但是恢复已删除的文件只是Git可以做的一小部分。更重要的是,Git是一种在团队中分享工作的有效方式。只需几个命令,您就可以将整个存储库(包括其所有历史记录)克隆到另一台计算机,其他人可以在其中进行自己的更改。Git包含的命令可以让您轻松地将其他人的存储库中的更改带回到您的存储库中。这些功能还允许您使用代码托管服务,如GitHub。

如果您想了解更多关于Git的知识,您应该查看Treehouse的Git简介课程。一旦你掌握了Git,你就再也不用担心失去你的工作了!

打赏
发表评论 取消回复
表情 图片 链接 代码

  1. wei zou
    wei zou Lv 3

    发点干货出来研究研究啊

    Google Chrome 71 Google Chrome 71 Windows 7 Windows 7
    • 云柯
      云柯 站长

      你倒是说你要哪种干货呢[aru_36]

      Google Chrome 63 Google Chrome 63 Windows 7 Windows 7

      @wei zou

  2. wei zou
    wei zou Lv 3

    你可真能水

    Google Chrome 71 Google Chrome 71 Windows 7 Windows 7
    • 云柯
      云柯 站长

      怎么就水了[aru_19]

      Google Chrome 63 Google Chrome 63 Windows 7 Windows 7

      @wei zou

      • wei zou
        wei zou Lv 3

        出点 好玩的东西

        Google Chrome 71 Google Chrome 71 Windows 7 Windows 7

        @云柯

        • 云柯
          云柯 站长

          比如fq教程...[aru_20]

          Google Chrome 63 Google Chrome 63 Windows 7 Windows 7

          @wei zou

分享
微信
微博
QQ