Git进阶教程

撤销修改

❓暂存区和工作区到底有什么作用?为什么不能直接把工作区的修改直接commit到仓库?

😁下面,就来看一下,Git的优势所在:

git checkout

➕还记得add命令吗,我们使用add命令可以将目前的文件添加到暂存区

🔐添加到暂存区,相等于在暂存区创建了一份备份

⚫当我们在工作区修改文件出错想撤回的时候,我们可以直接让暂存区的文件覆盖当前文件。

我们先打开Readme.txt文件查看其中的内容:

old

❤然后使用git add命令添加到暂存区:

1
2
Administrator@LAPTOP-89OP7KJM MINGW64 ~/Desktop/LearnGit (master)
$ git add Readme.txt

⛷添加成功后,我们随意修改Readme.txt中的内容:

new

📨然后可以使用如下命令,让文件回到使用add添加到暂存区时的状态:

1
2
Administrator@LAPTOP-89OP7KJM MINGW64 ~/Desktop/LearnGit (master)
$ git checkout -- Readme.txt

🛴执行命令后,发现文件已经回退到了添加到暂存区时的状态:

old

🐷git checkout命令有两种情况:

1.若已经使用add添加文件到暂存区,执行命令会使文件回退到add命令时的状态。

2.若未使用add添加文件到暂存区,执行命令会使文件回退到版本库中的状态。

git reset

😥若文件被修改乱了,并且已经把改乱后的文件添加到了暂存区,又该怎么办呢?

这时候,我们可以使用下面的命令从版本仓库中获取文件覆盖当前文件:

1
2
Administrator@LAPTOP-89OP7KJM MINGW64 ~/Desktop/LearnGit (master)
$ git reset HEAD Readme.txt

👌执行完命令后,暂存区的文件将被版本库覆盖

😋然后使用 git checkout命令将暂存区的文件覆盖到工作区即可。

删除文件

😁继续上面的教程,现在我们在工作区删除某一个文件。

🐷使用git status命令查看工作区状态:

1
2
3
4
5
6
7
8
9
Administrator@LAPTOP-89OP7KJM MINGW64 ~/Desktop/LearnGit (master)
$ git status
On branch master
Changes not staged for commit:
(use "git add/rm <file>..." to update what will be committed)
(use "git restore <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 文件被删除了。

😱如果是误删,我们想恢复文件,可以使用撤销修改命令:

1
2
3
Administrator@LAPTOP-89OP7KJM MINGW64 ~/Desktop/LearnGit (master)
$ git checkout Readme.txt
Updated 1 path from the index

😄这样,Readme.txt便从暂存区或版本库中恢复了。

😋如果我们确实想删除这个文件,并且在版本库中删除:

我们可以使用 git add 命令 或 git rm 命令,下面介绍两个目录的不同。

git add

📡手动删除文件后,使用git add将变动告诉暂存区,然后使用commit命令提交这次变动,即可成功删除。

git rm

🆑git rm = rm + git add,使用git rm可以将工作区文件删除并将变动告诉暂存区,然后使用commit命令提交这次变动,即可成功删除。

总结

😜本节进一步深入了解暂存区和工作区的关系以及撤销修改和删除文件操作。

🚩创作不易,本人保证所发文章均为精心筹备。

💌如需转载,请保留作者信息和博客地址。

📡如果感觉博客对你略有帮助,欢迎转发给你的朋友,让他们加入到技术风暴中来吧!