前言

本章开始,我会笼统的介绍一下git的一些常用指令,然后挑我感兴趣的一些指令进行详细解析和拓展。这章将不像前一章那样关注概念的理解,而是逐渐将重心转移到应用上去。

Git指令

Git的指令(命令)可以分为几种主要类型,每种类型针对不同的操作和功能,其实如果你一路看下来光看名字也能猜出个所以然,前面文章中也多多少少触及到了一些Git指令。以下是主要的几种类型指令:

1. 配置命令

  • git config:设置Git的全局或本地配置。

2. 仓库命令

  • git init:初始化新的Git仓库。
  • git clone:克隆远程仓库。

3. 文件操作命令

  • git add:将更改添加到暂存区。
  • git rm:删除文件。
  • git mv:移动或重命名文件。

4. 提交命令

  • git commit:提交更改。
  • git commit --amend:修改上一个提交。
  • git commit -m "message":提交时直接添加提交信息。

5. 分支和合并命令

  • git branch:管理分支。
  • git checkout:切换分支或恢复文件。
  • git merge:合并分支。
  • git rebase:变基操作,将当前分支的基础更改为另一个分支。

6. 版本历史命令

  • git log:查看提交历史。
  • [[git diff]]:比较差异。
  • git show:查看特定提交的详细信息。
  • git blame:查看每一行代码的最后提交信息。

7. 远程操作命令

  • git fetch:获取远程更新。
  • git pull:获取并合并远程更新。
  • git push:将本地更改推送到远程。
  • git remote:管理远程仓库。

8. 标签命令

  • git tag:创建和管理标签。

9. 恢复和重置命令

  • git reset:重置当前分支。
  • git checkout -- <file>:恢复文件到上一个提交状态。
  • git revert:撤销某个提交的更改。
  • git clean:清理工作目录中的未跟踪文件。

10. 高级命令

  • git cherry-pick:将特定提交应用到当前分支。
  • git stash:暂存当前的修改,清空工作区。
  • git reflog:查看引用日志,跟踪分支的历史移动。
  • git bisect:二分查找提交,帮助定位引入bug的提交。

11. [[Git子模块命令|子模块命令]]

  • git submodule:管理Git子模块,允许在一个Git仓库中包含另一个仓库。

12. [[Git hook|钩子命令]]

  • Git支持通过钩子脚本(如pre-commitpost-commit)实现自动化操作。

小结

Git命令的类型和功能非常丰富,以上列举的命令涵盖了大部分常用的Git操作。根据不同的需求,开发者可以灵活运用这些命令来管理版本、协作开发和维护代码库。掌握这些命令将大大提高开发效率和代码管理能力。

本地仓库的三个分区

Git基础-CSDN博客👈这篇文章是在我初次尝试去学Git时所作,现在回头看文字稍显青涩、板板正正的,不像现在偶然会乱讲几句胡话。但其实还是干货满满的,值得一看。现在就对文中讲到的分区再重新讲解一下吧,但是具体的使用还是看我的那篇文章为好。
在Git的本地仓库中,有三个重要的“分区”,分别是 工作区(Working Directory)、暂存区(Staging Area,又称索引区),以及 本地仓库(Local Repository)。理解它们的关系和作用对掌握Git的操作非常关键。

1. 工作区(Working Directory)

  • 定义:工作区是用户直接操作文件的区域,也就是项目文件所在的目录。用户在这里编辑、删除和新增文件,修改代码等。
  • 作用:工作区中的文件状态可以分为“已修改”(Modified)和“未跟踪”(Untracked)。修改后的文件需要进入暂存区后才可以提交到本地仓库。
  • 操作示例:在工作区中编辑文件后,文件会显示为“已修改”状态。这时可以使用 git status 命令查看哪些文件被修改或新增。

2. 暂存区(Staging Area)

  • 定义:暂存区是一个缓存区,保存的是即将提交到本地仓库的文件快照。也可以理解为一个准备提交的文件清单,Git会在这里收集并标记所有即将进入下一个提交的更改。
  • 作用:暂存区让用户可以在一次提交中选择性地包含文件。例如,可以一次性对多个文件做出不同的修改,但只提交其中的一部分。
  • 操作示例:在工作区修改完文件后,用 git add <filename> 命令将文件从工作区添加到暂存区。使用 git status 可以看到这些文件已处于暂存状态,等待提交。

3. 本地仓库(Local Repository)

  • 定义:本地仓库是用户提交的所有历史记录的存储库,Git会将暂存区中的所有文件快照记录下来,以形成新的提交(commit)。
  • 作用:本地仓库包含项目的完整版本历史,并且每个提交都会生成一个唯一的哈希值标识,从而保证版本的不可变性。所有已提交的内容都保存在本地仓库中,用户可以查看历史、回滚到旧版本,甚至恢复被删除的内容。
  • 操作示例:当暂存区准备好后,使用 git commit -m "message" 将暂存区内容提交到本地仓库。提交后,暂存区清空,文件正式进入本地仓库的版本历史中。

这三个区域的工作流

一个典型的Git工作流程涉及以下步骤:

  1. 修改:在工作区中编辑文件,产生更改。
  2. 暂存:使用 git add 将修改的文件放入暂存区。
  3. 提交:使用 git commit 将暂存区中的更改提交到本地仓库。

图解关系

1
工作区 (Working Directory)  ←→  暂存区 (Staging Area)  ←→  本地仓库 (Local Repository)

这三者之间的流动形成了Git的基本工作流,其中工作区用于修改代码,暂存区用于挑选要提交的内容,而本地仓库负责保存所有提交的历史版本。

总结

至于为什么要区分这三个区,我就简单的讲下,具体的可以自己找资料学,我个人认为主要是在版本回退(reset)中使用到:

git reset 的三种常用模式

reset 有三种主要的模式,对应着不同的作用范围:

  1. git reset --soft

    • 影响范围只影响本地仓库,不影响暂存区或工作区。
    • 效果:将提交记录向后回滚,但不更改暂存区或工作区的内容。这种模式下,文件状态保持暂存,适用于更改提交信息或重新组织提交历史。
    • 用途示例:撤销最近的一次提交,合并多次提交为一次。
  2. **git reset --mixed**(默认模式)

    • 影响范围:影响本地仓库和暂存区,但不影响工作区。
    • 效果:将提交记录回滚,同时将暂存区内容取消暂存。工作区中的文件保持不变,仍然包含上一次提交的修改。
    • 用途示例:想重新选择哪些文件暂存而不改变实际代码内容时。
  3. git reset --hard

    • 影响范围:影响本地仓库、暂存区和工作区
    • 效果:彻底回滚到指定提交点,将暂存区和工作区的文件全部恢复到该提交状态。任何未提交的更改都会丢失,因此需要谨慎使用。
    • 用途示例:完全恢复到某个历史提交版本,清除所有未保存的更改。

当然还有像git checkoutgit restoregit revertgit stashgit clean这些涉及到[[与Git三个分区有关的指令]],但由于不是本章的目的,我就不具体讲解使用了,感兴趣或者要用到就自己去问GPT。

后记

这篇文章确实短,我也发现后面的内容也没有那么难懂了,只能说轻舟已过万重山,之后大概也是这样,将一些具体实践上的事情一笔带过,让读者了解一下有些什么即可。我还是坚持实用至上,当真正用到的时候自然会会的,快速推进知识迭代打开知识面。