教你如何在vscode里玩转git操作(3)!!!(小白必看)

208 阅读8分钟

🐟前言

通过前两篇的学习,我们已经掌握了Git的大部分操作啦今天,我们将继续深入学习Git的高级操作,包括撤销操作、查看历史记录和标签管理。这些功能将帮助我们在开发过程中更加灵活地管理和回溯代码版本,确保项目的顺利进行。让我们一起继续这段Git之旅!!

教你如何在vscode里玩转git操作(1)

教你如何在vscode里玩转git操作(2)

撤销操作:回到过去

创作的过程中,偶尔也会走弯路,这时如果能回到过去的某个时刻,一切将会变得简单得多。幸运的是,Git提供了一种“时光机”,让你可以轻松地撤销操作。

在介绍撤销操作之前我们认识一下工作区,暂存区仓库

工作区

定义

工作区是你在本地计算机上进行开发和编辑文件的地方。当你克隆一个Git仓库或创建一个新的Git仓库时,这个仓库的根目录就是你的工作区。

特点
  • 文件状态:工作区中的文件可以处于不同的状态,如已修改(Modified)、未修改(Unmodified)、新增(New)等。
  • 未暂存:工作区中的文件修改尚未被添加到暂存区(Staging Area),因此这些修改是未暂存的。

暂存区

定义

暂存区(也称为索引 Index)是位于工作区和仓库之间的一个中间区域。当你使用 git add 命令时,实际上是将工作区中的文件修改添加到暂存区。

特点
  • 文件状态:暂存区中的文件已经准备好被提交到仓库。
  • 暂存:使用 git add <file> 命令将工作区中的文件添加到暂存区。

仓库

定义

仓库是存储项目所有版本历史的地方。每次你提交更改时,Git都会将暂存区的内容保存到仓库中,并生成一个新的提交(Commit)。

特点
  • 版本历史:仓库中存储了项目的完整版本历史,包括所有提交记录。
  • 不可变:一旦提交到仓库,提交内容是不可变的,除非使用强制推送等特殊操作。

关系图解

工作区 (Working Directory)
       |
       |  git add
       v
暂存区 (Staging Area)
       |
       |  git commit
       v
仓库 (Repository)

操作示例

1. 修改工作区中的文件

假设你有一个文件 example.txt,你对其进行了修改。

# 修改 example.txt
echo "New content" >> example.txt
2. 查看工作区状态

使用 git status 命令查看工作区的状态,可以看到 example.txt 已经被修改但尚未暂存。

git status

输出可能如下:

On branch main
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
        modified:   example.txt

no changes added to commit (use "git add" and/or "git commit -a")
3. 将修改添加到暂存区

使用 git add 命令将修改添加到暂存区。

git add example.txt
4. 查看暂存区状态

再次使用 git status 命令查看状态,可以看到 example.txt 已经被暂存。

git status

输出可能如下:

On branch main
Changes to be committed:
  (use "git restore --staged <file>..." to unstage)
        modified:   example.txt
5. 提交更改到仓库

使用 git commit 命令将暂存区的内容提交到仓库。

git commit -m "Update example.txt"

总结

  • 工作区:是你当前正在工作的目录,文件在这里进行编辑和修改。
  • 暂存区:是一个中间区域,用于暂存工作区中的修改,准备提交到仓库。
  • 仓库:存储项目的完整版本历史,包括所有提交记录。

理解这些概念和它们之间的关系,可以帮助你更好地管理代码版本,确保项目的顺利进行。希望这些信息对你有所帮助!如果你有任何问题或需要进一步的解释,欢迎随时提问。

撤销修改

撤销文件的未提交修改

如果你对某个文件的未提交修改不满意,可以使用 git checkout -- <file> 命令恢复文件到最近的一次提交状态。

git checkout -- <file>

示例: 假设你对 example.txt 文件进行了修改,但后来发现这些修改并不满意,可以使用以下命令恢复文件到最近的一次提交状态:

git checkout -- example.txt

撤销最后一次提交

撤销最后一次提交并保留更改

如果你希望撤销最后一次提交,但保留工作区中的更改,可以使用 git reset --soft HEAD~1 命令。

git reset --soft HEAD~1

示例: 假设你提交了最后一次更改,但发现需要重新修改,可以使用以下命令撤销最后一次提交并保留更改:

git reset --soft HEAD~1
撤销最后一次提交并丢弃更改

如果你希望撤销最后一次提交并丢弃所有更改,可以使用 git reset --hard HEAD~1 命令。请注意,这个操作会丢失最后一次提交后的所有改动,因此请谨慎使用。

git reset --hard HEAD~1

示例: 假设你提交了最后一次更改,但发现这些更改完全错误,可以使用以下命令撤销最后一次提交并丢弃所有更改:

git reset --hard HEAD~1

撤销特定文件的提交

撤销特定文件到某个特定的提交状态

有时你只想回退某个文件到某个特定的提交状态,可以使用 git checkout <commit> <file> 命令。

git checkout <commit> <file>

示例: 假设你希望将 example.txt 文件恢复到某个特定的提交 abc1234 的状态,可以使用以下命令:

git checkout abc1234 example.txt

详细解释

git checkout -- <file>
  • 功能:恢复文件到最近的一次提交状态。
  • 用途:适用于未提交的修改。
  • 效果:撤销文件的未提交修改,恢复到最近的一次提交状态。
git reset --soft HEAD~1
  • 功能:撤销最后一次提交,但保留工作区中的更改。
  • 用途:适用于需要重新修改的情况。
  • 效果:撤销最后一次提交,但保留工作区中的所有更改,可以重新提交。
git reset --hard HEAD~1
  • 功能:撤销最后一次提交并丢弃所有更改。
  • 用途:适用于完全放弃最后一次提交的情况。
  • 效果:撤销最后一次提交并丢弃所有更改,工作区恢复到前一次提交的状态。
git checkout <commit> <file>
  • 功能:将文件恢复到某个特定的提交状态。
  • 用途:适用于需要恢复特定文件到某个特定提交的情况。
  • 效果:将文件恢复到指定提交的状态,保留其他文件的当前状态。

查看历史记录:故事的足迹

每次提交都会生成一条提交记录,这些记录组成了项目的版本历史。通过查看历史记录,你可以清晰地回顾项目的演进历程。

查看提交历史

使用 git log 命令查看项目的完整提交历史。

git log
简化历史记录

如果你觉得默认的历史记录太长,可以使用 git log --oneline 命令来查看更简洁的提交历史。

git log --oneline
查看某次提交的变化

如果你想详细了解某次提交的具体内容,可以使用 git show <commit> 命令。

git show <commit>

示例: 查看某个特定提交 abc1234 的详细信息:

git show abc1234

标签管理:里程碑的记忆

在开发过程中,有些重要的时刻值得被特别记住,比如项目的第一个公开版本。在Git中,标签就像是为这些重要时刻设立的里程碑。

创建标签

当你达到一个重要阶段时,可以使用 git tag -a <tag-name> -m "Tag message" 命令为这个阶段打上一个标签。

git tag -a <tag-name> -m "Tag message"

示例: 为项目的第一个公开版本打上标签 v1.0

git tag -a v1.0 -m "First public release"
查看所有标签

使用 git tag 命令可以列出所有的标签。

git tag

示例: 查看所有的标签:

git tag
推送标签到远程仓库

为了让其他人也能见证这些里程碑,可以使用 git push origin <tag-name> 或者 git push origin --tags 将标签推送到远程仓库。

git push origin <tag-name>

或者推送所有标签:

git push origin --tags

示例: 推送标签 v1.0 到远程仓库:

git push origin v1.0

示例总结

假设你已经完成了一些开发工作,并希望创建一个标签来标记项目的第一个公开版本:

  1. 创建标签

    git tag -a v1.0 -m "First public release"
    
  2. 查看所有标签

    git tag
    
  3. 推送标签到远程仓库

    git push origin v1.0
    

🐟 结语

亲爱的jym们,通过这次旅行,我们不仅学会了如何使用Git进行更复杂的操作,还体验了它带来的无限可能性。Git不仅仅是我们程序员的工具,它也是创作者的朋友,帮助我们在创作的路上走得更远。希望今天的分享能够激发你更多的灵感,如果你有任何疑问或想法,欢迎随时留言交流。

希望这篇文章能够帮助你的读者更深入地理解Git的高级功能,同时也为他们的开发之旅增添一份乐趣。